我正在学习 Elm,我发现它有很多吸引人的地方,比如它的优雅和简单。然而,我觉得令人困惑的一个方面是它使用“++”来连接字符串。例如:
> "hello" ++ " world"
"hello world"
加法以您期望的方式工作。
> 2 + 3 + 9
14
大多数高级语言(例如 C#/Java/JavaScript/Python)使用单个加号“+”以类似的方式将多个数字相加来连接字符串。它看起来更直观,因为在连接字符串(如对数字求和)时有一定的一致性。
有谁知道在这种情况下使用++ 而不是 + 的设计决策背后的逻辑?
最佳答案
Elm 允许您定义多态函数。
参数多态是指函数可以应用于任何类型的元素:
f : (a, b) -> (b, a)
f (x, y) = (y, x)
Ad-hoc 多态性是指一个函数可以应用于某些类型的元素:
g : appendable -> appendable -> appendable -> appendable
g x y z = x ++ y ++ z
h : number -> number -> number
h x y = (x + 2) * y
类型变量
number
和 appendable
是特殊的,因为它们代表所有 Elm 类型的子集。 List
和 String
是 appendable
类型同时 Float
和 Int
是数字类型。理论上可以改为定义
hasPlus
类型变量将包括 List
, String
, Float
和 Int
,但是在定义多态函数时,您需要注意 x + y
是可能的不同于 y + x
如果你真的在考虑数字,那将是一个相当大的负担......
关于types - 为什么 Elm 使用 '++' 运算符来连接字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42416602/