forall表示法:句点/点是什么意思?

M. *_*ker 7 haskell purescript

句点/点是什么意思?

forall a. Num a => a -> a -> a
Run Code Online (Sandbox Code Playgroud)

它只是一个分隔符吗?

Ben*_*son 13

是的,它只是一个句法分隔符.它将变量声明与变量用法分开,就像->在lambda表达式中一样.这意味着"在这里努力粘合剂".我想语言设计师会选择,.因为它缩短了22个字符.

  • @ M.Walker许多数学家也这样做.问题是,在类型理论,编程语言理论(和类别理论在某种程度上),我们写了很多"forall x:T,y:A-> B,......".写"forall x:T:p(x)"看起来很奇怪.历史上形成了写"forall x:T.p(x)"的趋势,也许是从lambda演算中借用"点"分隔符.(我不知道是谁开始的,但是Peano/Russell使用了点,但不同.)Haskell遵循这一趋势(但没有逗号).在CS论文中,我经常看到点,但也使用其他符号. (4认同)
  • 数学中的其他常用符号对编程来说相当烦人:`forall a(Num a => a - > a - > a)`和`forall a:Num a => a - > a - > a`.这给我们留下了`.`. (2认同)