'#'是什么意思?
问题描述:
STM (State# RealWorld -> (#State# RealWorld, a#))
#
没有显示在Haskell运营商列表中,谷歌也没有产生任何有用的东西。 Ghci:>:t (#)
指出:变量不在范围内。'#'是什么意思?
那么这个角色做了什么?为什么它用在上面的一段代码中(来自STM)?
答
你需要一种语言扩展才能使用它,这就是它的特别之处!
它什么也没做,它只是一个特殊的人物,GHC人们喜欢用低级别的拳击相关的东西。
有(# a, b #)
这是a
和b
未装箱的元组,也就是你看到有什么样的类型 - 这不是(#State# , ...
,这是(# State#, ...
。
还有什么让我困惑的是,有提及''状态#''和''#状态#'' - 这两者是相同还是有区别? – BitTickler
啊!那么也没有涉及到的''''''!这可能就是证明haskell解析器在解析时更加智能化,因为我是:) – BitTickler
实际上,您需要两种语言扩展名来代替unboxed元组:'UnboxedTuples'和'MagicHash',以允许标识符名称如'State#' 。 – dfeuer