Haskell newtype定义

Asa*_*bal 0 haskell newtype

我在为作业提供的代码中读到了这句话: -

newtype STR a = STR (Store -> (Result a, Store))
Run Code Online (Sandbox Code Playgroud)

以上链接使它看起来像:

a === (Store -> (Result a, Store))
Run Code Online (Sandbox Code Playgroud)

这怎么可能是一个有效的陈述?这是否意味着这a是一个以Store为参数并返回的函数('the same function wrapped in Result', Store)

yat*_*975 9

newtype定义是比较混乱,因为符号STR是在两种不同的含义使用:即类型名称(第一发生)的,并且构造(第二)的.将两者重命名为不同的东西会导致等效

newtype STRType a = STRConstructor (Store -> (Result a, Store))
Run Code Online (Sandbox Code Playgroud)

换句话说,这引入了一种STRType a结构上与Store -> (Result a, Store)(但需要包裹在一起STRConstructor)相同的类型

我希望你的课程/书已经进入了它们之间的区别type,data并且newtype; 否则这将保持相当神秘,我害怕......