我在为作业提供的代码中读到了这句话: -
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)?
的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; 否则这将保持相当神秘,我害怕......