Haskell 案例-为什么我得到非法的lambda表达式
您好,这是我大学的代码,但如果我想运行它,我会得到一个错误Haskell 案例-为什么我得到非法的lambda表达式,haskell,Haskell,您好,这是我大学的代码,但如果我想运行它,我会得到一个错误 data Nat = Zero | Succ Nat data NatSig val = NatSig {zero_ :: val, succ :: val -> val} foldNat :: NatSig val -> Nat -> val foldNat alg = \case Zero -> zero_ alg Succ n -> succ alg
data Nat = Zero | Succ Nat
data NatSig val = NatSig {zero_ :: val, succ :: val -> val}
foldNat :: NatSig val -> Nat -> val
foldNat alg = \case Zero -> zero_ alg
Succ n -> succ alg $ foldNat alg sn
一些
知道为什么吗?语法
\case
不在Haskell报告中,因此标准Haskell中不允许使用。要使用它,必须启用LambdaCase
扩展。有几种不同的方法可以做到这一点,包括:
-XLambdaCase
放在命令行上{-#LANGUAGE LambdaCase}
放在文件的顶部:在GHCi提示下设置-xlambdase
语法
\case
不在Haskell报告中,因此在标准Haskell中不允许使用。要使用它,必须启用LambdaCase
扩展。有几种不同的方法可以做到这一点,包括:
-XLambdaCase
放在命令行上{-#LANGUAGE LambdaCase}
放在文件的顶部:在GHCi提示下设置-xlambdase
Illegal lambda-case (use -XLambdaCase)