首页 > 解决方案 > Haskell ' 符号有什么作用?

问题描述

正如标题所述,我在网上看到了变量/函数旁边有 ' 的代码片段,这是做什么/意味着什么?前任:

function :: [a] -> [a]
function ...

function' :: ....

标签: haskell

解决方案


正如其他答案所说,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

...当然,这样命名变量不一定是个好主意;通常,在制作已命名事物的稍微不同版本时会使用此类素名。例如,foldlandfoldl'是具有相同签名的函数,它们基本上做相同的事情,只是严格性不同(这通常会影响性能内存使用以及是否允许无限输入,但不会影响实际结果)。

也就是说,对于这个问题

Haskell 这个'符号有什么作用?

– 该'符号实际上也可以做其他各种事情,但只有当它不作为名称中的非前导字符出现时。

  • 'a'字符文字
  • 'Foo在类型级别上使用的构造函数。请参阅数据种类
  • 'bar并且''Baz引用的名称。请参阅TemplateHaskell

推荐阅读