Questions tagged «haskell»

一种功能编程语言

3
Ur / Web用于网络编程的新的纯功能语言?[关闭]
已关闭。这个问题是基于观点的。它当前不接受答案。 想改善这个问题吗?更新问题,以便通过编辑此帖子以事实和引用的形式回答。 4年前关闭。 在搜索类似Haskell的语言的Web框架时遇到了Ur / Web项目。它看起来像一个人完成的非常有趣的项目。 基本上,它是Web编程的领域特定的纯功能语言,它充分利用了ML和Haskell的优势。语法是ML,但是Haskell有类型类和monad,并且经过严格评估。服务器端被编译为本地代码,客户端被编译为Javascript。有关其他广告优势,请参见幻灯片和常见问题页面。 查看这些演示及其源代码,我认为该项目非常有前途。最新版本是20110123,因此目前似乎正在积极开发中。 这里有人有进一步的经验吗?与ML稍微冗长的语法相比,与Haskell相比是否存在问题/烦恼?

2
有状态库顶部的无副作用界面
在约翰·休斯(John Hughes)的采访中,他谈到了Erlang和Haskell,他对在Erlang中使用有状态的库有以下看法: 如果要使用有状态的库,通常会在其之上构建无副作用的接口,以便随后可以在其余代码中安全地使用它。 他是什么意思?我试图考虑一个例子,但是我的想象力和/或知识使我失望。

3
Haskell的高级概念(如Monads和Applicative Functor)对大多数常规编程任务有多重要?
我已经读过《学Haskell的学习》书,直到他们介绍Monad和诸如Just a之类的东西为止。这些对我来说太违反直觉了,以至于我只是想放弃尝试学习它。 但是我真的很想尝试。 我想知道我是否至少可以暂时避开高级概念,而只是开始使用语言的其他部分来完成Haskell的更基本部分的许多实际任务,即函数,标准IO,文件处理,数据库接口等。 这是学习使用Haskell的合理方法吗?
16 haskell 

4
为什么不依赖于更改状态有什么好处?
这个问题出自问题/software/25569/is-haskell-worth-learning 通常,对于Haskell如何提高您在其他语言中的编码技能,通常会重复声明一些,此外,这是因为Haskell是无状态的,这是一件好事。 为什么? 我见过有人将其与只用左手打字,或者闭上眼睛一天,仅依靠触摸来进行比较。当然,还有更多呢? 它与硬件内存访问有关,还是与其他性能提升有关?


4
单元测试静态类型的功能代码
我想问大家,在这种情况下,对以Haskell,scala,ocaml,nemerle,f#或haXe编写的静态类型的功能代码进行单元测试是有意义的(最后一个是我真正感兴趣的,但是我想利用更大社区的知识)。 我问这是因为,根据我的理解: 单元测试的一方面是使规范具有可运行的形式。但是,当采用声明性样式将规范化规范直接映射到语言语义时,实际上是否有可能以可运行的形式以独立方式表达规范,从而增加价值? 单元测试最明显的方面是跟踪无法通过静态分析发现的错误。鉴于类型安全的功能代码是一种非常接近静态分析器所理解的代码的好工具,因此您似乎可以将很多安全性转移到静态分析上。但是,无法涵盖代码中使用x而不是y(都为坐标)之类的简单错误。OTOH在编写测试代码时也可能会出现这样的错误,因此我不确定是否值得这样做。 单元测试确实引入了冗余,这意味着当需求改变时,实现它们的代码和涉及该代码的测试都必须被改变。当然,这种开销大约是恒定的,因此可以说,这并不重要。实际上,在像Ruby这样的语言中,它的确无法与优势相提并论,但是鉴于静态类型的函数式编程涵盖了许多基础单元测试的目的,因此感觉这是一个不变的开销,可以不付出任何代价就可以减少它。 由此推断,在这种编程风格中,单元测试已经过时了。当然,这样的主张只会导致宗教战争,所以让我将其归结为一个简单的问题: 当您使用这种编程风格时,您在什么程度上使用单元测试以及为什么使用(为什么希望代码获得什么质量)?或者反过来说:您是否有标准,可以用来限定静态分析器覆盖的静态类型功能代码单元,因此不需要单元测试范围?

6
将函数式编程引入您的开发环境[关闭]
已关闭。这个问题需要更加集中。它当前不接受答案。 想改善这个问题吗?更新问题,使其仅通过编辑此帖子来关注一个问题。 5年前关闭。 这是一个漫长的故事,但我会尽力总结一下。我们是.NET商店,专门为各种不同类型的基金编写软件。例如,我们编写了健康索赔管理软件,养老金管理软件,401(k)软件和一些其他财务类型的东西。 现在,我们进入了一个新领域:衍生工具和定量分析类型的工作,这似乎非常令人兴奋。有人告诉我,在接下来的8到12个月中,这种情况将会下降。 现在,我已经学会了一些函数式编程,主要是通过这本书对各种语言的肤浅了解,但从未真正深入过它。现在,由于我们是.NET商店,所以我认为F#可能是一个不错的选择,因为我们可以潜在地利用某些.NET库和现有知识。 我的问题是,从哪里开始?我现在很难确定我是否应该使用Haskell,Erlang,Scala,F#等。它们似乎都很有趣且有能力,坦率地说,这可能是摆脱依赖Microsoft的好机会。 有人遇到过类似情况吗?如果是这样,那么您在过渡到功能方面的经验是什么?您选择了什么?为什么?我知道这是一个很大的问题,但是我不知道任何正在使用函数方法的开发人员,因此除了不断地谷歌搜索并在最佳函数式语言上到处发现火焰之战之外,我别无选择。

1
为什么Haskell在没有单态性限制的情况下无法避免重复评估?
前几天,我刚学完了youahaskell,并且试图理解Haskell Wiki中描述的“单态限制” 。我想我了解MR如何防止重复评估,但是我看不出为什么用更直接的方法无法避免重复评估。 我想到的具体示例是Wiki使用的示例: f xs = (len,len) where len = genericLength xs 哪里genericLength是类型Num a => [b] -> a。 显然,genericLength xs只需计算一次即可求值(len,len),因为它是具有相同参数的相同函数。我们不需要f知道任何调用即可知道这一点。那么,为什么Haskell不能在不引入MR之类的规则的情况下进行此优化? 那个Wiki页面上的讨论告诉我,它与Num类型类而不是具体类型有关,但是即使这样,在编译时纯函数是否返回相同的值也不应该很明显- -并因此使用相同的Num具体类型-两次给相同的参数?

5
习惯FP思维的人应该如何阅读命令性代码?
我大约五个月前从大学毕业,并且已经在一家本地初创公司工作了四个月。在大学期间,我独自学习了Haskell,F#等。我们在大学里学过Java,但是我很快就接触了函数式编程,并且花了更多的时间在命令式编程上。结果,我的大脑开始思考功能性思维。我加入的公司使用Python,并且代码非常重要。我很难阅读命令式代码。我无法追踪突变。当“如果……否则……”嵌套的深度超过四个级别时,我将完全失去对代码中所发生情况的跟踪。另外,Python是一种动态语言,因此代码中没有类型。它' 自从我试图理解我们代码库的一部分(据称是“中等复杂”)以来已经有几个星期了,但是到目前为止,我在理解它方面还没有取得任何明显的进展。请向我提供一些实用的技巧,以帮助我理解该代码。提前致谢! 编辑: 也许我还应该提到代码中没有很多注释,而且名称也不是很直观。

5
导出从Haskell获得的知识和技能的最兼容,使用最广泛的生产语言是什么?
我喜欢Haskell,简洁明了。虽然Haskell用于生产软件中,但根据我所见,它并未得到特别广泛的部署。在生产项目方面,最相似且仍被广泛使用的语言是什么,这样我可能会有滚雪球般的机会在行业中使用类似的出色产品? 大量平台上是否也提供了与第一部分相同的语言?如果没有,那么具有广泛平台部署的最佳替代方案是什么?我希望将一种语言放入待办事项清单,而不是庞大的人群或家庭。确凿的证据将是一个加号。

2
对Haskell中的GUI库的建议[关闭]
关闭。这个问题是题外话。它当前不接受答案。 想改善这个问题吗? 更新问题,以使它成为软件工程堆栈交换的主题。 5年前关闭。 正如Haskell Wiki本身所言: Haskell有大量的GUI库。不幸的是,没有标准的标准,而所有标准或多或少都是不完整的。通常,低级别的贴面进展顺利,但级别较低。高级抽象是实验性的。需要受支持的中级GUI库。 我学院的一位教授要求我和其他三个计算机科学专业的学生考虑为Haskell开发GUI库。他对该项目的最初想法是在OpenGL之上编写一个层,该层模仿Smalltalk中的形态库。但是,这只是一个建议,其他系统绝对值得考虑。 这将我们带到一个实际的,包含多个部分的问题。 我们的图书馆应该争取什么抽象水平?Haskell Wiki似乎强烈表明将首选中级GUI库。但是,仍然欢迎使用高级图书馆。 我们的图书馆应基于什么建造?(例如OpenGL) 您希望看到什么现有的GUI库模仿我们的库(如果有),为什么?(例如PyGame,Morphic,Swing等) 您希望我们的库实现或避免哪些功能?例如,Gnome的好人可能会认为“最小化”按钮是不必要的。 您有什么一般性建议吗? 您会给这个假想库一个聪明的名字吗?(例如HOT-Haskell Opengl Toolkit; HAWT-Haskell Advanced Windowing Toolkit)

8
为什么功能语言语法不更接近人类语言?
我对函数式编程感兴趣,因此决定与Haskell面对面。我的头很痛...但是我最终会得到...虽然我有一个好奇心,为什么语法如此神秘(缺少另一个词)? 是否有一个原因为什么它是不是更有表现力,更接近人类语言? 我知道FP擅长对数学概念进行建模,并且借用了一些简洁的表达方式,但它仍然不是数学……这是一种语言。

2
Haskell中是否删除了类型?
Haskell的“泛型函数”概念与常见的lisp有一些明显的相似之处-既没有Haskell的经验,也没有常见的lisp,在这里我可能是非常近似的。这意味着可以定义一种通用to_string工具来定义所有类型的字符串表示形式。当然,必须在特殊情况下定义to_string功能,但是有一个函数的签名为α → string。 是否像在OCaml中一样在Haskell中删除了类型?如果是,那么Haskell中“泛型函数”的实现与普通lisp的实现有何不同,后者在普通类型中是动态的,因此不会被擦除? 我了解实现细节是特定于编译器的,但是可能有许多或所有实现共有的规定。

2
使用C#接口实现Haskell类型类
我正在尝试比较Haskell的类型类和C#的接口。假设有一个Functor。 Haskell: class Functor f where fmap :: (a -> b) -> f a -> f b 如何在C#中将此类型类实现为接口? 我尝试过的 interface Functor<A, B> { F<B> fmap(Func<A, B> f, F<A> x); } 这是无效的实现,实际上我受困于F应该由返回的泛型类型fmap。应该如何定义它以及在哪里? Functor用C#不可能实现吗?为什么?也许还有另一种方法?
13 c#  haskell 

5
可以在没有状态的情况下表示任何程序任务吗?
这是一个理论问题,但是经过多年的编程之后,我意识到现在是“正常的”命令式技术,主要使用C ++,我发现了函数式编程的另一个领域,在偶然学习JavaScript时偶然发现了这个问题。 这使我想知道您是否可以用一个纯粹的功能且没有状态的不同实现在技术上替换任何完整的面向状态的程序? 这是一个有趣的想法,我必须承认,函数编程的清晰性和优雅性确实让我大吃一惊。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.