问题标签 [ghcjs]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1325 浏览

javascript - GHCJS:如何使用 FFI 导入高阶 javascript 函数?

如何在 GHCJS 中导入如下 Javascript 函数?

我尝试了以下各种组合但没有成功:

感谢您提供任何帮助,并提供 GHCJS FFI 文档的链接。

谢谢

0 投票
1 回答
275 浏览

macos - 无法在 OS X 10.9.1 Mavericks 上访问 localhost:3030

我已经使用 安装了 GHCJS VM ,然后在和vagrant中成功编译并运行“Hello World”示例。但是当我尝试nodejs

localhost:3030/<path to jsexe>无法访问。发货的示例也是如此。

看起来端口转发不起作用。Vagratn通过安装brew

0 投票
1 回答
170 浏览

ffi - GHCJS: setTimeout($c, $1);: 无效占位符,检查函数类型:“$c”

我已经按照建议安装了 VM,现在正在阅读这篇文章。现在我一开始就在看 FFI 的例子。我缺少ffi.jsexe/文件夹(在 内ghcjs-examples/weblog/ffi)并试图自己编译它。但它失败并出现以下错误:

setTimeout($c, $1);: invalid placeholder, check function type: "$c"

这里是快速提醒我们有什么ffi.hs

抱歉,我完全是 Haskell 和 FP 的新手,所以现在对我来说有些东西就像魔法一样。我已经替换$c为,null因为它是有道理的,因为它delay本身只有一个参数,因此不会执行任何代码。所以它可以编译,但是当我在浏览器中打开它时,所有数字都会立即打印出来。我还有一个小问题。setTimeout返回一些处理程序(整数值),并以毫秒为单位获取回调函数和时间,对吗?那么为什么delay有这种类型的签名Int -> IO ()而不是,比如说,IO () -> Int -> IO Int

主要问题是为什么它拒绝编译?这个例子是否已经过时并且本身已经改变了一些东西ghcjs

0 投票
1 回答
285 浏览

haskell - 我可以在 GHCJS 中读取文件吗?

HTML5 引入了标准文件 API。GHCJS 是否提供访问权限?我可以在 中使用标准的 Haskell IO 设施System.IO吗?

0 投票
2 回答
181 浏览

haskell - 无法安装 ghcjs-dom-0.0.7 - src/GHCJS/DOM.hs:3:14:不支持的扩展:JavaScriptFFI

我在安装 Leksah 时遇到问题,这取决于 ghcjs-dom:

这是我在尝试安装这个精确包时得到的准确信息:

我的配置:

GHC 7.8 似乎存在一些补丁,但不知道如何使用它们。

0 投票
1 回答
756 浏览

haskell - 使用 ghcjs 将 Haskell 模块编译为 Javascript

是否可以使用 将 Haskell 模块编译为 JS ghcjs?我玩过它,但它似乎需要main在生成 JS 之前定义函数。下面的玩具代码:

我不知道如何使用ghcjs. 如果未定义 main 函数,它将仅编译 .hi 和 .o 文件。如果我能找到一种将它编译为 JS 的方法(使用适当Z-encoded的函数名称和相应的 JS 对象,就像我们在FFIC 中所拥有的那样),那么我可以使用更强大的 Haskell 库,比如unordered-containersvector实现一些算法,编译为JS,并Elm通过 JS FFI 使用。

Fay似乎有能力做到这一点。我想先调查一下ghcjs

0 投票
1 回答
191 浏览

haskell - 为 FFI 定位 Javascript 库

我正在挖掘ghcjs-jquery代码以查看其JavascriptFFI工作原理。我想弄清楚的是,一旦您为 JS 函数定义了 FFI 导入类型签名,您如何帮助ghcjs找到包含该函数的文件。

检查Internal.hs和 Cabal 配置,我看不到任何指定 JQuery JS 文件路径的方法。我还四处寻找有关JavascriptFFI功能的文档,但没有找到任何东西。我将感谢有关如何ghcjs为任何 JS 库执行 Javascript FFI 的指示。必须有一些命令行选项ghcjs来告诉它在哪里找到js文件。

我打算在弄清楚JavascriptFFI.ghcjs

0 投票
1 回答
712 浏览

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

我正在尝试使用 node.js 运行使用 GHCJS 构建的程序。但是,我收到以下错误:

  1. 是否可以增加节点中允许的变量数量?
  2. 是否有更好的实用程序来运行 JS 文件,这将允许更多变量
  3. 是否有可以自动减少变量数量的优化工具?

请注意,这是机器生成的 JS,所以我不想通过手工来减少变量的数量。

欢迎任何想法。

0 投票
1 回答
727 浏览

haskell - GHCJS-DOM 事件指导

我正在尝试了解如何使用 GHCJS-DOM 创建 GUI。我一直在查看 hello world 示例https://github.com/ghcjs/ghcjs-dom-hello,这很简单。添加新节点很简单。我不能做,也不能从图书馆文档(只有签名)中解决的是添加一些事件。例如,通过鼠标单击将新节点添加到主体。

我希望避免使用像 JQuery 这样的 JS 库,因为我希望通过 GUI 在 GHC (webkit) 和 GHCJS 之间移植。

最终,我希望能够将鼠标事件表达为 FRP 事件,但我会一步一步解决。

如果有人有任何指导,我将不胜感激。我已经使用 haskell 几年了,但这是我第一次尝试 DOM。

0 投票
1 回答
6060 浏览

haskell - 使用重载字符串

OverloadedStrings扩展确实非常有用,但是它有一些缺点。考虑以下函数定义:

在这种情况下,如果我想传递一个文字值,我必须在OverloadedStrings启用时显式添加类型签名:

这种必要性的原因很明显,我想OverloadedStrings旨在简化将文字值传递给具有严格类型签名的函数,从而使开发人员无需在需要值pack的任何地方编写 s 。Text

问题是有什么方法可以将所有没有类型签名的字符串文字默认为Text, 或String? 或者我应该将我的代码拆分为通用函数(具有ToJSString类型约束)和任意函数,它们的参数具有严格的类型签名?