Haskell计划 48小时内完成的个人方案
玩弄一些 Haskell :mouse_face:。我感到困惑的笔记是关于数据类型 data ParsecT s u m a,其中的 s、u、m、a 是泛型类型参数,类似于 Scala/Java 中的泛型 trait Parsec [ S , U , M , A ]
。(<|>) 操作符限定了 m 为 Monad 类型,Haskell 中的类型读取有助于从右到左理解这些参数。
例如,(<|>) :: Monad m => ParsecT s u m a -> ParsecT s u m a
这一部分告诉我们:ParsecT
接受 s、u、m 和 a 作为参数。在 Haskell 中,函数会自动柯里化。比如,一个函数 val addTwoNums : Int => Int = (x, y) => x + y
可以在 Haskell REPL 中表示为:ghci Prelude > let addTwoNums x y = x + y
。
用户评论