haskell解析n + k模式的模式错误 [英] haskell parse error in pattern for n+k pattern

查看:140
本文介绍了haskell解析n + k模式的模式错误的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我已经开始通过Erik Meijer的 13部分讲座(以及Graham Hutton的滑动)来学习Haskell。

在第4章第13页的幻灯片中,它介绍了n + k模式的模式匹配语法。特别是它说:


在数学中,整数函数可以用n + k
模式定义,其中n是一个整数变量,k> 0是一个整数
常量。



  pred :: Int  - > Int 
pred(n + 1)= n

REPL我收到一条错误消息:

  * Main> let mypred(n + 1)= n 

< interactive>:65:13:解析模式错误:n + 1

同样,如果我在 *。hs 文件中试用它

  mypred :: Int  - > Int 
mypred(n + 1)= n

编译器提供了类似的抱怨: / p>

  /Users/pohl/Code/praxis-haskell/helloworld.hs:14:9:
模式中的解析错误:n + 1

我不知道如何使用n + k模式吗? p>

解决方案

您必须通过 -XNPlusKPatterns

启用它。 b
$ b

  ghci -XNPlusKPatterns 
前奏>让mypred(n + 1)= n
Prelude> mypred 2
1

同样在 hs

  { - #LANGUAGE NPlusKPatterns# - } 

mypred :: Int - > Int
mypred(n + 1)= n

在ghci载入后

  * Main> mypred 2 
1


I have started working my way through Erik Meijer's 13-part lectures (and Graham Hutton's slides) to learn Haskell.

On the slides for Chapter 4, on page 13, it introduces the pattern-matching syntax for n+k patterns. In particular, it says:

As in mathematics, functions on integers can be defined using n+k patterns, where n is an integer variable and k>0 is an integer constant.

pred :: Int -> Int
pred (n+1) = n

When I tried this on my own in the REPL I get an error message:

*Main> let mypred (n+1) = n

<interactive>:65:13: Parse error in pattern: n + 1

Similarly, if I try it in a *.hs file

mypred :: Int -> Int
mypred (n+1) = n

The compiler gives a similar complaint:

/Users/pohl/Code/praxis-haskell/helloworld.hs:14:9:
    Parse error in pattern: n + 1

Am I not understanding how n+k patterns are intended to be used?

解决方案

You have to enable it by -XNPlusKPatterns.

ghci -XNPlusKPatterns
Prelude> let mypred (n+1) = n
Prelude> mypred 2
1

Similarly in a hs file.

{-# LANGUAGE NPlusKPatterns #-}

mypred :: Int -> Int
mypred (n+1) = n

After loading in ghci

*Main> mypred 2
1

这篇关于haskell解析n + k模式的模式错误的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆