jjzjj

javascript - 如何在严格评估的语言中实现 protected 递归?

我在Javascript中实现了一个Scott编码的List类型以及一个模仿Semigroup类型类的重载append函数。append工作得很好,但对于大型列表,它会破坏堆栈。这是我实现的决定性部分:appendAdd("List/List",tx=>ty=>tx.runList({Nil:ty,Cons:x=>tx_=>Cons(x)(append(tx_)(ty))}));通常我使用蹦床来避免不断增长的堆栈,但这以尾递归为前提,因此在这种情况下不起作用。由于这个实现是基于Haskell的,我猜惰性求值和保护递归/尾递归模cons会有所不同:(++)[]ys=ys(++)(x:xs

javascript - 如何使用 JScript 或 JavaScript 创建数组文字?

在HJavaScript中有Arraytype,但我看不到构造文字的方法,例如,将JS转换为[1,2,3]。我不想创建一个newArray()然后将项目插入其中,如果我不需要的话。理想情况下,我在使用类似array::[t]->Arrayt的函数。我可能会使用JConst来实现array,但这似乎是对一些应该是直截了当的东西的hack。我也可以使用上面的创建和推送方法来实现array,不过这也不是很好。这里是插入的array;不太好。array::[Expa]->JS(JArraya)arrayxs=doarr 最佳答案 这个问题是

javascript - 使用 Node 运行 GHCJS 程序的变量太多

我正在尝试使用node.js运行一个使用GHCJS构建的程序。但是,我收到以下错误:SyntaxError:Toomanyvariablesdeclared(only131071allowed)atModule._compile(module.js:439:25)atObject.Module._extensions..js(module.js:474:10)atModule.load(module.js:356:32)atFunction.Module._load(module.js:312:12)atFunction.Module.runMain(module.js:497:10)

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

javascript - 如何共享延续的中间结果?

请注意,尽管这个问题中的示例是用Javascript编码的,但底层概念在Haskell中很常见,虽然我更喜欢用Javascript表达自己,但我也很欣赏Haskell中的答案。在Javascript中,我使用CPS根据一元原则处理异步计算。然而,为了简单起见,我将使用正常的延续monad来解决这个问题。随着我的延续作品的增长,我不断发现自己处于需要访问这些作品的中间结果的情况。由于Javascript是命令式的,因此很容易将这些结果存储在变量中并在以后访问它们。但是由于我们谈论的是延续访问中间结果意味着调用函数并多次访问它们意味着大量的重新评估。这似乎很适合内存。但是如果那个函数不返回

xml - 没有 OverloadedStrings 的 Haskell xml-conduit?

我在网上看到的Haskell的xml-conduit模块的每个示例都使用OverloadedStringsGHC扩展(例如here)。我假设这是因为Text.XML.Cursor.element函数的类型为Name->Axis。例如,如果没有OverloadedStrings,此代码段将无法工作:{-#LANGUAGEOverloadedStrings#-}importText.XMLimportText.XML.CursorimportData.Text(Text)importData.Text.Read(decimal)importData.Monoid(mconcat)main:

xml - 在 Haskell 中解析 XML

我正在尝试学习一些Haskell,我想解析一些具有以下结构的XML文件:12按照wiki中的示例我可以通过以下方式搜索所有属性runX(readDocument[withValidateno]"my.xml">>>deep(isElem>>>hasName"properties")但是我怎样才能只提取propertyname="b"的值元素呢? 最佳答案 老实说,我发现HXT是一个使用起来相当复杂的库。到目前为止,我的理解是您使用箭头链将一个文档转换为另一个文档。如果你想学习箭头,你可能会发现我的解决方案是作弊,但对我来说它完成了工

xml - haskell:xml过滤子树

我正在努力使用haskell删除一个元素及其所有子元素。任务是从给定的xml文档中删除所有表标签(也许我不理解游标的概念,或者我缺少其他东西)。我尝试了三种不同的方法:带有遍历/过滤并使用新元素设置过滤值的镜头-此处仅替换标签而不替换内容使用游标访问表元素-重置那里的内容并通过遍历游标直到文档根再次获取文档根-没有过滤以递归方式过滤文档根目录的子项-没有过滤工具xml-conduitxml-lensghc-8.0.1输入(test.xml)/输出INPUTEXPECTEDOUTPUT(forthefilteredcases)|||...|...||||...||...|||...||.

xml - 如何使用 Haskell 查询 RDF 数据?

我是Haskell初学者。我有来自ProjectGutenberg的RDFXML,如下所示:ArchivescontainingtheRDFfilesfor*all*ourbookscanbedownloadedathttp://www.gutenberg.org/wiki/Gutenberg:Feeds#The_Complete_Project_Gutenberg_CatalogPoetry2017-03-16T05:01:13.61504712133application/rdf+xml1991-10-01ParadiseLostPR5071332011-03-02T06:33:5