|
|
1
85
恐怕你在这方面的转变太过缓和了。非常严格的类型系统和纯粹的函数式风格是Haskell的特点,几乎任何类似主流编程语言的东西都需要至少在其中一个方面有所妥协。因此,考虑到这一点,这里有一些广泛的建议,旨在保留 最 你似乎喜欢哈斯克尔的地方,但有一些重大转变。
这些建议中的大多数也在其他答案中提到,但希望我的理由能提供一些启示。 |
|
|
2
20
首先你说你想开阔你的视野。然后你描述你想要的语言,它的视界听起来像你已经拥有的视界。一次又一次地学习同样的东西,你不会有什么收获。 我建议你学习Lisp,即commonlisp,Scheme/Racket或Clojure。默认情况下,它们都是动态类型的,但具有某种类型暗示或可选的静态类型。球拍和Clojure可能是你最好的选择。 Clojure 是最近的,有更多的haskellists,比如默认的不变性和大量的延迟计算,但是它基于Java虚拟机,这意味着它有一些奇怪的缺点(例如JVM不支持尾部调用消除,所以递归是一种黑客行为)。 Racket 它的历史要老得多,但在这一过程中获得了很多功能,比如静态类型支持和对函数式编程的关注。我想你可能会从球拍中得到最大的收获。 Lisps中的宏系统非常有趣,比其他任何地方看到的都强大得多。这一点至少值得一看。 |
|
|
3
19
从适合你专业的角度来看,最明显的选择似乎是一种逻辑语言,如Prolog或其派生语言。逻辑编程可以非常巧妙地用函数式语言完成(参见。 The Reasoned Schemer ),但您可能喜欢直接使用逻辑范式。
|
|
|
4
18
我建议你学习 Coq ,这是一个强大的证明助手,语法让Haskell程序员感到舒服。Coq最酷的地方是它可以被提取到其他函数式语言中,包括Haskell。甚至还有一个包裹( Meldable-Heap )关于用Coq编写的Hackage,已经证明了其操作的属性,然后提取到Haskell。 我想这两个都不容易。但是如果你 知道 如果Haskell想要发展一种比Haskell类型系统更强大的语言,那么就应该考虑它们。 |
|
|
5
11
因为除了你的主观兴趣之外,你没有提到任何限制,并且强调“值得学习”(好吧,好吧,我将忽略静态类型限制),我建议你学习几种不同范例的语言,最好是对每种范例都“示范”的语言。
尤其是Lisps(CL不如Scheme)和Prolog(以及Haskell)支持递归。
因此,虽然我似乎忽略了你没有时间尝试几种语言的部分,但我认为花在这些语言上的时间不会被浪费,你应该看看所有的语言。 |
|
|
6
10
来一杯怎么样 stack-oriented programming language Cat 达到你的最高点。它是:
多布斯博士发表了一篇论文 short article 2008年关于猫的报道,尽管语言略有变化。 |
|
|
7
10
|
|
|
8
9
我有点晚了,但是我发现没有人提到过一些范例和相关的语言,这些范例和语言的高度抽象性和通用性让你感兴趣: |
|
|
9
8
如果你想找别的东西,我能理解。例如,正如其他人所建议的那样,逻辑编程可能正适合你。 *我假设您在这里指的是静态类型,因为您要声明类型。从技术上讲,Python 一种强类型语言,因为你不能任意解释,比如说,一个字符串作为一个数字。有趣的是,有一些Python衍生工具允许静态类型,比如 Boo . |
|
|
10
8
|
|
|
11
8
根据你的描述,我建议 Ocaml F级# . ML系列在强类型系统方面通常是非常好的。对递归和模式匹配的强调也很清楚。 值得学习 部分。毫无疑问,学习它们对我是有好处的。但是考虑到你的限制和你对你想要的东西的描述,看起来你实际上并没有在寻找比Haskell更不同的东西。 蟒蛇 两者都会让你走出舒适区。 |
|
|
12
6
根据我的经验,强类型+强调递归意味着另一种函数式编程语言。再说一次,我想知道这是不是很值得,因为他们中没有一个会像哈斯克尔那样“纯洁”。 正如其他海报所建议的,Prolog和Lisp/Scheme都很不错,尽管它们都是动态类型的。许多对他们有很强理论“品味”的伟大著作已经出版,特别是关于计划的。看一看 SICP ,这也传达了许多通用的计算机科学智慧(元循环解释器等)。 |
|
|
14
5
Lisp . Prolog也是一种很酷的语言。 |
|
|
15
5
如果您决定偏离您对类型系统的偏好,那么您可能会对J编程语言感兴趣。它突出表现在如何强调功能组合。如果你喜欢Haskell的无点风格,J的默契形式将是有益的。我发现它非常发人深省,尤其是在语义方面。 诚然,它不符合你的先入之见,你想要什么,但看看它。仅仅知道它就在那里是值得去发现的。完整实现的唯一来源是J软件,jsoftware.com网站. |
|
|
16
0
Java 或 . |
|
|
17
0
好问题——虽然我的背景很不一样(有机化学),但在花了几个月的时间彻底享受哈斯克尔之后,我最近自己也在问这个问题。 像你一样,C和它的同类是不可能的。
|