17

Haskell を学ぶために 、Erik Meijer の13 部構成の講義(および Graham Hutton のスライド) に取り組み始めました。

13 ページの第 4 章のスライドでは、n+k パターンのパターン マッチング構文が紹介されています。特に、次のように述べています。

数学と同様に、整数の関数は n+k パターンを使用して定義できます。ここで、n は整数変数で、k>0 は整数定数です。

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

REPL でこれを自分で試したところ、エラー メッセージが表示されました。

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

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

同様に、*.hsファイルで試してみると

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

コンパイラは同様の苦情を出します:

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

n+k パターンの使用方法を理解していませんか?

4

2 に答える 2

34

で有効にする必要があり-XNPlusKPatternsます。

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

hsファイルでも同様です。

{-# LANGUAGE NPlusKPatterns #-}

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

ghciにロードした後

*Main> mypred 2
1
于 2013-01-10T04:18:34.997 に答える
9

n+k パターンの使用方法を理解していませんか?

実際、今日ではn+kパターンは悪い習慣と見なされています。これの主な理由は、構文が Haskell の他のものと実際には似ていないことです。表記法がどのように機能するかとは異なり、+部分はスコープ内の を実際には使用していません。また、viewpatterns拡張機能は、より多くの設定で役立つ一般化のようなものです。+do

削除された理由の詳細については、こちらをご覧ください。

于 2013-01-10T04:46:43.610 に答える