Haskell 什么是'#';?
Haskell 什么是'#';?,haskell,Haskell,#没有出现在Haskell操作符列表中,谷歌也没有提供任何有用的东西Ghci:>:t(#)状态:变量不在范围内 那个角色是做什么的?为什么在上面的代码中使用它(来自STM)?您甚至需要一个语言扩展才能使用它,这就是它的特殊之处 它没有任何作用,它只是一个看起来很特别的角色,GHC的人喜欢用它来命名低级的或者拳击相关的东西 这里有(#a,b#),它是a和b的非固定元组的类型,这就是你在那里看到的-,它不是(#State#,…,它是(#State#,…同样让我困惑的是,有人提到了State#和#St
#
没有出现在Haskell操作符列表中,谷歌也没有提供任何有用的东西<代码>Ghci:>:t(#)状态:变量不在范围内
那个角色是做什么的?为什么在上面的代码中使用它(来自STM)?您甚至需要一个语言扩展才能使用它,这就是它的特殊之处 它没有任何作用,它只是一个看起来很特别的角色,GHC的人喜欢用它来命名低级的或者拳击相关的东西
这里有
(#a,b#)
,它是a
和b
的非固定元组的类型,这就是你在那里看到的-,它不是(#State#,…
,它是(#State#,…
同样让我困惑的是,有人提到了State#
和#State#
-这两者是相同的还是有区别?啊哈!那么也就没有a#
了?!!这可能只是证明haskell解析器在解析方面比我更聪明:)这段代码实际上需要两种语言扩展:unxedtuples
用于unxedtuples和MagicHash
以允许像State.
@dfeuer这样的标识符名称。感谢您删除了google-able-nameMagicHash
!我找到了一个很好的切入点来解释问题:
STM (State# RealWorld -> (#State# RealWorld, a#))