Haskell'符号有什么作用?
正如标题所述,我在网上看到一段代码,其中变量/函数旁边有 ',这是什么/意味着什么?前任:
function :: [a] -> [a]
function ...
function' :: ....
回答
正如其他答案所说,function'只是另一个变量名。所以,
don'tUse :: Int -> IO ()
don'tUse won'tBe''used'' = return ()
就像
dontUse :: Int -> IO ()
dontUse wontBeUsed = return ()
名称略有不同。唯一的要求是名称以小写字母或下划线开头,之后您可以根据需要使用任意数量的单引号字符。
Prelude> let _' = 1
Prelude> let _'' = 2
Prelude> let _''''''''' = 9
Prelude> _' + _'' * _'''''''''
19
...当然,这样命名变量不一定是个好主意;通常,在制作已命名的事物的略有不同版本时,会使用此类素数。例如,foldl和foldl'是具有相同签名的函数,它们做本质上相同的事情,只是具有不同的严格性(这通常会影响性能内存使用以及是否允许无限输入,但不会影响实际结果)。
也就是说,对于这个问题
Haskell
'符号有什么作用?
– 该'符号实际上也可以做其他各种事情,但前提是它不是作为名称中的非前导字符出现时。
'a'是一个字符文字。'Foo是在类型级别使用的构造函数。请参阅数据种类。'bar和''Baz是引用的名称。请参阅TemplateHaskell。