STM (State# RealWorld -> (#State# RealWorld, a#))
#
在Haskell运算符列表中没有显示出来,而且谷歌也没有提供任何有用的信息。 Ghci:>:t (#)
显示:变量不在范围内。
那么这个字符是做什么用的?为什么在上述STM代码中使用它?
STM (State# RealWorld -> (#State# RealWorld, a#))
#
在Haskell运算符列表中没有显示出来,而且谷歌也没有提供任何有用的信息。 Ghci:>:t (#)
显示:变量不在范围内。
那么这个字符是做什么用的?为什么在上述STM代码中使用它?
您需要一种语言扩展才能使用它,这就是它的特殊之处!
它并不会做任何事情,只是一个特殊的字符而已, GHC 的人们似乎喜欢在低级别、可能与 boxing 相关的东西的名称中使用它。
有一个叫做(# a, b #)
的类型,它是a
和b
的未打包元组类型,这就是你在那里看到的--它并不是( #State# , ...
,而是(# State#, ...
。
a#
的参与?!?!这可能只是证明Haskell解析器在解析方面比我更聪明 :) - BitTicklerUnboxedTuples
用于不装箱的元组和MagicHash
以允许使用诸如State#
这样的标识符名称。请注意,翻译后保持原文意思,尽量使语言通俗易懂,并且不要添加解释或其他额外的信息。 - dfeuer