草庐IT

haskell - 何时(何时不)定义 Monad

这是一个与API设计实践相关的问题,用于为Haskell库定义您自己的Monad实例。定义Monad实例似乎是隔离DSL的好方法,例如Parmonadinmonad-par,hdph;Process在分布式进程中;Eval并行等...我举了两个haskell库的例子,它们的目的是与数据库后端进行IO。我举的例子是riak对于RiakIO,和hedis用于RedisIO。在hedis中,一个Redismonadisdefined.从那里,您使用redis运行IO:dataRedisa--instanceMonadRedisrunRedis::Connection->Redisa->IOa

c# - F# vs Haskell vs Lisp——学习哪种语言?

关闭。这个问题是opinion-based.它目前不接受答案。想要改进这个问题?更新问题,以便editingthispost可以用事实和引用来回答它.关闭9年前。Improvethisquestion我听说过很多关于函数式编程语言的信息,我愿意学习一种。我想这主要是为了好玩,但是,我希望它能提高我的编程技能。我主要有C#/.NET背景,所以我的第一选择是学习F#(因为.NET和熟悉VisualStudio)。另一方面,我想知道F#是否具有Lisp宏或Haskell高阶函数等功能。您能比较一下F#、Haskell和Lisp吗?您会选择哪一种语言?

c# - F# vs Haskell vs Lisp——学习哪种语言?

关闭。这个问题是opinion-based.它目前不接受答案。想要改进这个问题?更新问题,以便editingthispost可以用事实和引用来回答它.关闭9年前。Improvethisquestion我听说过很多关于函数式编程语言的信息,我愿意学习一种。我想这主要是为了好玩,但是,我希望它能提高我的编程技能。我主要有C#/.NET背景,所以我的第一选择是学习F#(因为.NET和熟悉VisualStudio)。另一方面,我想知道F#是否具有Lisp宏或Haskell高阶函数等功能。您能比较一下F#、Haskell和Lisp吗?您会选择哪一种语言?

c# - Haskell 中 map 函数的 C# 等价物是什么

Haskell中的map函数有两个输入参数。第一个参数是一个函数,第二个参数是一个列表。map函数将作为输入参数传递的函数应用于列表中的所有元素并返回一个新列表。是否有与此功能等效的C#? 最佳答案 选择MSDNReference看我的问题WhyistheLINQ"apply-to-all"methodnamedSelect?(仅当您好奇,因为它没有直接关系时)。 关于c#-Haskell中map函数的C#等价物是什么,我们在StackOverflow上找到一个类似的问题:

c# - Haskell 中 map 函数的 C# 等价物是什么

Haskell中的map函数有两个输入参数。第一个参数是一个函数,第二个参数是一个列表。map函数将作为输入参数传递的函数应用于列表中的所有元素并返回一个新列表。是否有与此功能等效的C#? 最佳答案 选择MSDNReference看我的问题WhyistheLINQ"apply-to-all"methodnamedSelect?(仅当您好奇,因为它没有直接关系时)。 关于c#-Haskell中map函数的C#等价物是什么,我们在StackOverflow上找到一个类似的问题:

git - 用于脚本编写的 haskell 中的表达式评估模式

正如其他地方多次提到的(例如1、2、...),haskell中的脚本非常强大。一个快速的方法也可以是ghcexpressionevaluationmode.这就是我发现自己越来越多地使用的东西(我真的很喜欢ruby​​中的这个特性)。一个小示例任务:“找出所有包含HEAD和特定修订版之间的gitdiff的文件夹”gitdiff--stat9e2b68|ghc-e\"getContents>>=return.(Data.List.nub).map(fst.break('/'==).head.words).lines"这看起来有点笨拙,可能是因为我不太了解使用ghc-e的细节。鉴于所有有趣

git - 用于脚本编写的 haskell 中的表达式评估模式

正如其他地方多次提到的(例如1、2、...),haskell中的脚本非常强大。一个快速的方法也可以是ghcexpressionevaluationmode.这就是我发现自己越来越多地使用的东西(我真的很喜欢ruby​​中的这个特性)。一个小示例任务:“找出所有包含HEAD和特定修订版之间的gitdiff的文件夹”gitdiff--stat9e2b68|ghc-e\"getContents>>=return.(Data.List.nub).map(fst.break('/'==).head.words).lines"这看起来有点笨拙,可能是因为我不太了解使用ghc-e的细节。鉴于所有有趣

linux - GHC 是如何实现 unsafePerformIO 的?

从unsafePerformIO开始,到RTS、libc或OSAPI结束,GHC如何实现IO?当标准前奏不可用时,我试图了解IO在Haskell中的工作方式(例如,如果我们出于某种原因自己实现标准前奏)。我原本希望在GHC的Haskell代码中找到对C函数的包装调用,但事实并非如此。unsafePerformIO建立在runRW#之上,这是沉重的魔法开始的地方,我们开始崩溃到Haskell中没有实现的函数和类型,而是内置到编译器中.runRW#似乎能够对现实世界的状态(即State#RealWorld)运行IO操作。尝试从另一个方向走,一直没有在RTS中找到落脚点。它似乎不包含我期望的

linux - GHC 是如何实现 unsafePerformIO 的?

从unsafePerformIO开始,到RTS、libc或OSAPI结束,GHC如何实现IO?当标准前奏不可用时,我试图了解IO在Haskell中的工作方式(例如,如果我们出于某种原因自己实现标准前奏)。我原本希望在GHC的Haskell代码中找到对C函数的包装调用,但事实并非如此。unsafePerformIO建立在runRW#之上,这是沉重的魔法开始的地方,我们开始崩溃到Haskell中没有实现的函数和类型,而是内置到编译器中.runRW#似乎能够对现实世界的状态(即State#RealWorld)运行IO操作。尝试从另一个方向走,一直没有在RTS中找到落脚点。它似乎不包含我期望的

linux - 在 jail 环境中运行 Haskell 程序需要什么

我想在我自己构建的受限环境中运行一个简单的Haskell程序。我要运行以下Haskell程序:importSystem.IOmain=dohPutStrLnstderr"teststandarderror!"hPutStrLnstdout"teststandardout!"它只是将一个字符串输出到stderr和stdout,在jail外工作得很好。代码编译如下:ghc-O2--make-static-optc-static-optl-static$MAINHS-optl-pthread-obin/run_ai我得到一个运行该程序的run_ai可执行文件,正如我所说,它在jail外工作正