13

Haskellで使用されている保護された方程式とその数学的意味について、誰かが私にわかりやすい説明を提供できますか?

4

3 に答える 3

12

Haskellガードは、入力に対して区分的に定義された数学関数と見なすことができます。

foo x | x < 0 = bar
      | x < 5 = baz
      | x < 20 = quux
      | otherwise = quaffle

次のような数学者によって書かれます:

foo(x) = { bar, if x < 0
           baz, if x >= 0 && x < 5
           quux, if x >= 5 && x < 20
           quaffle, if x >= 20

Haskell関数の各ガードは、次々に試行されるため、その前にあるすべてのガードの否定を暗黙的に実行します。

Haskellは、制御フローを追跡しやすくするために、等号の左側にガードを書き込むことを選択します。|を読むことを選択した場合 'そのような'として、それはかなり直感的になります。

于 2010-02-08T22:30:00.387 に答える
9

保護された方程式は、いわゆる大文字小文字の区別を含む方程式(等式に関するステートメント)です。例は次のとおりです。

fac :: Integer -> Integer
fac n | n > 0     = n * fac (n - 1)
      | otherwise = 1

これは階乗関数の定義です。数学者はこう書くでしょう、

ラテックス

0!= 1、定義上。0より大きいすべての値nについて、n!(n-1)で定義できます!。これは0には当てはまりません!。これが、2つのケースを区別する必要がある理由です。そして、それは守られた方程式が行うことです。

于 2010-02-08T22:34:20.010 に答える
4

保護された方程式は、区分的関数のHaskell等価構成です。

于 2010-02-08T22:30:18.037 に答える