【发布时间】:2011-09-04 02:08:54
【问题描述】:
我使用符号的两种语言是 Ruby 和 Erlang,我一直发现它们非常有用。
Haskell 确实有代数数据类型,但我仍然认为符号会非常方便。立即想到的一个用途是,由于符号与整数同构,因此您可以在使用整数或字符串“主键”的地方使用它们。
原子的语法糖可以是次要的 - :something 或
type ErrorCode = Atom
type Message = String
data Error = Error ErrorCode Message
loginError = Error :redirect "Please login first"
在这种情况下 :redirect 比使用字符串(“重定向”)更有效,并且比整数(404)更容易理解。
好处可能看起来微不足道,但我认为值得将原子添加为语言功能(或至少是 GHC 扩展)。
那么为什么没有在语言中添加符号呢?还是我想错了?
【问题讨论】:
-
不会出现错误代码之类的情况,您需要一组预定义的值,而不是允许任意可能是无意义的东西吗?大概在其他地方会有处理错误的代码,你想确保只给它知道如何处理的东西。
-
不一定。我可能想使用我想出的错误代码,而不必首先将整个错误集定义为数据类型。处理程序代码可以简单地处理它想要处理的情况,同时将其余部分集中在默认处理程序中。
-
这对 Haskell 来说似乎不是很地道。但即便如此,我认为提到的库 sclv 就足够了,所以我想我仍然不明白为什么它会有很大的不同。
标签: ruby haskell erlang language-design language-features