Haskell 哈斯克尔';符号是什么?

Haskell 哈斯克尔';符号是什么?,haskell,Haskell,正如标题所述,我在网上看到一些代码,其中变量/函数旁边有“这是什么意思?”? 例: 符号来自数学。它是x素数。在几乎所有的数学手册中,你都可以找到类似的东西,让x是一个数字,x'是。。。(数学素材) 为什么不使用另一个约定?嗯,在数学中这很有意义,因为它可以是非常教学性的。。。在编程中,我们不习惯这个约定,所以我不认为使用它有什么意义,但我也不反对它 只是给你一个在数学中使用它的例子,这样你就可以理解为什么在Haskell中使用它。下面是相同的三角形概念,但一个使用素数约定,另一个不使用素数约定

正如标题所述,我在网上看到一些代码,其中变量/函数旁边有“这是什么意思?”? 例:


符号来自数学。它是x素数。在几乎所有的数学手册中,你都可以找到类似的东西,
让x是一个数字,x'是。。。(数学素材)

为什么不使用另一个约定?嗯,在数学中这很有意义,因为它可以是非常教学性的。。。在编程中,我们不习惯这个约定,所以我不认为使用它有什么意义,但我也不反对它

只是给你一个在数学中使用它的例子,这样你就可以理解为什么在Haskell中使用它。下面是相同的三角形概念,但一个使用素数约定,另一个不使用素数约定。在第一张图片中很明显,配对(
A
A'
),(
B
B'
)。。。一个是顶点,一个是主版本,一个是倒点边的中点。而在第二个例子中,你只需要记住,
A
是顶点P的倒位边缘的中点。第一种方法更简单、更具教学性:


这个符号来自数学。它是x素数。在几乎所有的数学手册中,你都可以找到类似的东西,
让x是一个数字,x'是。。。(数学素材)

为什么不使用另一个约定?嗯,在数学中这很有意义,因为它可以是非常教学性的。。。在编程中,我们不习惯这个约定,所以我不认为使用它有什么意义,但我也不反对它

只是给你一个在数学中使用它的例子,这样你就可以理解为什么在Haskell中使用它。下面是相同的三角形概念,但一个使用素数约定,另一个不使用素数约定。在第一张图片中很明显,配对(
A
A'
),(
B
B'
)。。。一个是顶点,一个是主版本,一个是倒点边的中点。而在第二个例子中,你只需要记住,
A
是顶点P的倒位边缘的中点。第一种方法更简单、更具教学性:


正如其他答案所说,
函数“
只是另一个变量名。所以

 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
…当然,这样命名变量不一定是个好主意;通常,在对已命名的事物进行稍微不同的版本时,会使用这样的素数名称。例如,and是具有相同签名的函数,它们基本上做相同的事情,只是严格程度不同(这通常会影响性能内存使用以及是否允许无限输入,但不会影响实际结果)

也就是说,对这个问题

Haskell,
符号的作用是什么

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

  • 'a'
    是一个字符文本
  • 'Foo
    是在类型级别使用的构造函数。看
  • 'bar
    'Baz
    是引用的名称。看

正如其他答案所说,
函数“
只是另一个变量名。所以

 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
…当然,这样命名变量不一定是个好主意;通常,在对已命名的事物进行稍微不同的版本时,会使用这样的素数名称。例如,and是具有相同签名的函数,它们基本上做相同的事情,只是严格程度不同(这通常会影响性能内存使用以及是否允许无限输入,但不会影响实际结果)

也就是说,对这个问题

Haskell,
符号的作用是什么

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

  • 'a'
    是一个字符文本
  • 'Foo
    是在类型级别使用的构造函数。看
  • 'bar
    'Baz
    是引用的名称。看

什么都没有。它可以写成
function1
function2
function\u aux
等,同样如此。(这是一种回答,但我相信有人会发布一个更完整的答案,所以我保留这一条作为评论)。@WillNess谢谢你的回复,为什么人们会使用“约定而不是喜欢你的例子?”haskelnubb,这更像是一个数学约定,而不是具体的Haskell约定。此上下文中的
发音为“prime”。通常,
f'
将以某种方式从
f
派生而来,但没有硬性规定。什么都没有。它可以写成
function1
function2
function\u aux
等,同样如此。(这是一种回答,但我相信有人会发布一个更完整的答案,所以我保留这一条作为评论)。@WillNess谢谢你的回复,为什么人们会使用“约定而不是喜欢你的例子?”haskelnubb,这更像是一个数学约定,而不是具体的Haskell约定。此上下文中的
发音为“prime”。通常,
f'
将以某种方式从
f
派生,但没有硬性规定。