Jos*_*gts 8 scheme haskell types functional-programming lazy-evaluation
我很好奇静态类型和懒惰函数语言之间的关系.例如,是否可以使用动态惰性函数语言?好像所有懒惰的函数式语言都是静态类型的(Haskell,Miranda等),并且所有动态函数语言都使用严格的评估(Clojure,Scheme等).
特别是关于懒惰评估的维基百科文章内容如下:
但是,通过惰性求值,很难与异常处理和输入/输出等命令性功能相结合,因为操作顺序变得不确定.懒惰的评估可能会引入空间泄漏.
静态类型在防止空间泄漏方面起什么作用?
Pau*_*fer 14
我认为静态类型根本不起作用.例如,考虑无类型的懒惰语言Lazy Racket.我没有听说任何迹象表明它以Haskell(例如)没有的方式泄漏空间.
另一方面,副作用是一个问题,因为人类发现严格评估的评估顺序是(相对)自然的,并且需要的呼叫在精神上更难以预测.
静态类型在防止空间泄漏方面起什么作用?
类型可用于跟踪对象的生命周期,静态地确保没有泄漏.
一个例子是区域类型和其他效果类型.
| 归档时间: |
|
| 查看次数: |
972 次 |
| 最近记录: |