草庐IT

haskell-lens

全部标签

ruby - 需要为 Proc 实现 Haskell 的翻转

Haskell的Prelude有一个有用的函数,可以交换函数的参数:http://zvon.org/other/haskell/Outputprelude/flip_f.html我需要在Ruby中做同样的事情。我不想仅仅定义一个自定义方法,而是想猴子修补Proc类,以便我可以将flip与Proc#curry一起使用。有点像f=lambda{|x,y|[x,y]}g=f.flip.curry.(2)为y提供一个值。我不知道如何重新打开Proc类来做到这一点。 最佳答案 classProcdeffliplambda{|x,y|self.

ruby - Haskell 通过 FFI 与 Ruby 绑定(bind)?

由于ruby和Haskell都支持FFI,是否可以通过FFI从ruby​​调用Haskell代码?Ruby中有任何Haskell绑定(bind)吗? 最佳答案 我对这个讨论有点迟了,但我目前正在编写Ruby和Haskell之间的桥梁。它位于http://github.com/mwotton/Hubris-它是在C级别工作的绑定(bind)。不过,仍处于非常早期的开发阶段。 关于ruby-Haskell通过FFI与Ruby绑定(bind)?,我们在StackOverflow上找到一个类似的

ruby - 你会如何用 Ruby 和/或 Haskell 编写这个 Clojure 片段?

我当时正在研究一个Rails模板,并试图编写一些代码,让我可以填充一个表或多列ul标签“从上到下”和“从左到右”,无论多少我指定的列。我刚刚掌握了Ruby的窍门,所以我无法弄清楚这一点。我也很好奇这个有用片段的惯用Haskell版本。感谢对Clojure版本的改进:(defntable[xs&{:keys[colsdirection]:or{cols1direction'right}}](into[](condp=direction'down(let[c(countxs)q(int(/ccols))n(if(>(modcq)0)(incq)q)](applymapvector(part

ruby - 为什么 Haskell 没有符号(像 ruby​​)/原子(像 erlang)?

我使用符号的两种语言是Ruby和Erlang,我总是发现它们非常有用。Haskell确实有代数数据类型,但我仍然认为符号会非常方便。立即想到的一个用途是,由于符号与整数同构,您可以在使用整数或字符串“主键”的地方使用它们。原子的语法糖可以是次要的-:something或是一个原子。所有原子都是一个名为Atom的类型的实例,它派生出Show和Eq。然后,您可以将其用于更具描述性的错误代码,例如typeErrorCode=AtomtypeMessage=StringdataError=ErrorErrorCodeMessageloginError=Error:redirect"Please

javascript - 使用 MVars 在 Haskell 中实现事件流

我想将以下JavaScript代码移植到Haskell:http://jsfiddle.net/mz68R/这是我尝试过的:importControl.ConcurrentimportData.IOReftypeEventStreama=IORef[MVara]newEventStream::IO(EventStreama)newEventStream=newIORef[]setEvent::EventStreama->a->IO()setEventstreamevent=readIORefstream>>=mapM_(`putMVar`event)getEvent::EventStr

javascript - 如何在整个 Web 应用程序堆栈中利用 Haskell 类型安全?

我想知道以CRUD为中心的Web应用程序可以从Haskell的类型系统中获益多少,尤其是当前端是使用JavascriptMVC框架(如AngularJS传递无类型数据对象)构建时。在我看来,一旦将Haskell数据类型转换为JSON对象,并将其传递给繁重的JavaScriptMVC框架层,将Haskell的类型系统作为Web堆栈的一部分的好处就会开始急剧下降,因为没有让类型检查器确保通过整个Web应用程序的数据流的类型完整性的方法。例如,您可以更改数据库模式和关联的Haskell类型,但类型检查器无法告诉您JavaScriptMVC前端的哪些部分也需要更新。我认为这是一个问题。我是否正

javascript - 这个编译为 JavaScript 的 Haskell 程序如何比 JavaScript 本身更快?

我一直认为,与手动编写和优化的代码相比,GHCJS生成的JavaScript程序非常慢,原因很明显。不过,在试用它时,我发现它并没有我预期的那么糟糕。我决定运行一系列小型基准测试以了解真实性能,而这个让我特别惊讶。该程序只是用“1”填充数组并将它们相加。haskell:importData.Array.Repalen=1024*1024*64arr=fromFunction(Z:.len)(const1)::ArrayDDIM1Floatmain=sumAllParr>>=printJavaScript:varlen=1024*1024*64vararr=[];varsum=0;for

go - 检查 channel 长度在 `for{ len(c) }` 中变得无响应

以下程序从不打印“Full”。在fmt.Println(len(choke))未注释的情况下,程序在channel已满时输出“Full”。packagemainimport("fmt")funcmain(){choke:=make(chanstring,150000)gofunc(){fori:=0;i=150000{fmt.Println("Full")}}}@tim-heckman在OP中解释了此行为的原因.如何在不使用热循环的情况下检测channel已满? 最佳答案 在写入端使用select语句。如果有缓冲区可用或有接收者等待

go - array转interface{}转slice,结果不能用len()等方法

我试过了:vara[100]intfuncfun1(srcinterface{})interface{}{src,_=src.([100]int)//changed[]intto[100]intfmt.Println(reflect.TypeOf(src))//result:[]intdest:=make([]int,len(src))returndest}出现错误:message:'invalidargumentsrc(typeinterface{})forlen'但是如果我重新定义一个变量:vara[100]intfuncfun1(srcinterface{})interface{

go - undefined : fmt. Println(build) 在GOlang中是什么意思?使用 "fmt.Println(len("hello world")"

我是Go语言和编程的新手。谁能解释错误的含义以及我该如何解决? 最佳答案 使用fmt.Println而不是fmt.PrintLn。将字母L小写。 关于go-undefined:fmt.Println(build)在GOlang中是什么意思?使用"fmt.Println(len("helloworld")",我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/46216071/