Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/wcf/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Haskell 什么是'#';?_Haskell - Fatal编程技术网

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-name
MagicHash
!我找到了一个很好的切入点来解释问题:
STM (State# RealWorld -> (#State# RealWorld, a#))