问题标签 [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.
javascript - GHCJS:如何使用 FFI 导入高阶 javascript 函数?
如何在 GHCJS 中导入如下 Javascript 函数?
我尝试了以下各种组合但没有成功:
感谢您提供任何帮助,并提供 GHCJS FFI 文档的链接。
谢谢
macos - 无法在 OS X 10.9.1 Mavericks 上访问 localhost:3030
我已经使用 安装了 GHCJS VM ,然后在和vagrant
中成功编译并运行“Hello World”示例。但是当我尝试node
js
localhost:3030/<path to jsexe>
无法访问。发货的示例也是如此。
看起来端口转发不起作用。Vagratn
通过安装brew
。
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
?
haskell - 我可以在 GHCJS 中读取文件吗?
HTML5 引入了标准文件 API。GHCJS 是否提供访问权限?我可以在 中使用标准的 Haskell IO 设施System.IO
吗?
haskell - 无法安装 ghcjs-dom-0.0.7 - src/GHCJS/DOM.hs:3:14:不支持的扩展:JavaScriptFFI
我在安装 Leksah 时遇到问题,这取决于 ghcjs-dom:
这是我在尝试安装这个精确包时得到的准确信息:
我的配置:
GHC 7.8 似乎存在一些补丁,但不知道如何使用它们。
haskell - 使用 ghcjs 将 Haskell 模块编译为 Javascript
是否可以使用 将 Haskell 模块编译为 JS ghcjs
?我玩过它,但它似乎需要main
在生成 JS 之前定义函数。下面的玩具代码:
我不知道如何使用ghcjs
. 如果未定义 main 函数,它将仅编译 .hi 和 .o 文件。如果我能找到一种将它编译为 JS 的方法(使用适当Z-encoded
的函数名称和相应的 JS 对象,就像我们在FFI
C 中所拥有的那样),那么我可以使用更强大的 Haskell 库,比如unordered-containers
并vector
实现一些算法,编译为JS,并Elm
通过 JS FFI 使用。
Fay
似乎有能力做到这一点。我想先调查一下ghcjs
。
haskell - 为 FFI 定位 Javascript 库
我正在挖掘ghcjs-jquery
代码以查看其JavascriptFFI
工作原理。我想弄清楚的是,一旦您为 JS 函数定义了 FFI 导入类型签名,您如何帮助ghcjs
找到包含该函数的文件。
检查Internal.hs
和 Cabal 配置,我看不到任何指定 JQuery JS 文件路径的方法。我还四处寻找有关JavascriptFFI
功能的文档,但没有找到任何东西。我将感谢有关如何ghcjs
为任何 JS 库执行 Javascript FFI 的指示。必须有一些命令行选项ghcjs
来告诉它在哪里找到js
文件。
我打算在弄清楚JavascriptFFI
.ghcjs
javascript - 使用 Node 运行 GHCJS 程序的变量太多
我正在尝试使用 node.js 运行使用 GHCJS 构建的程序。但是,我收到以下错误:
- 是否可以增加节点中允许的变量数量?
- 是否有更好的实用程序来运行 JS 文件,这将允许更多变量
- 是否有可以自动减少变量数量的优化工具?
请注意,这是机器生成的 JS,所以我不想通过手工来减少变量的数量。
欢迎任何想法。
haskell - GHCJS-DOM 事件指导
我正在尝试了解如何使用 GHCJS-DOM 创建 GUI。我一直在查看 hello world 示例https://github.com/ghcjs/ghcjs-dom-hello,这很简单。添加新节点很简单。我不能做,也不能从图书馆文档(只有签名)中解决的是添加一些事件。例如,通过鼠标单击将新节点添加到主体。
我希望避免使用像 JQuery 这样的 JS 库,因为我希望通过 GUI 在 GHC (webkit) 和 GHCJS 之间移植。
最终,我希望能够将鼠标事件表达为 FRP 事件,但我会一步一步解决。
如果有人有任何指导,我将不胜感激。我已经使用 haskell 几年了,但这是我第一次尝试 DOM。
haskell - 使用重载字符串
OverloadedStrings
扩展确实非常有用,但是它有一些缺点。考虑以下函数定义:
在这种情况下,如果我想传递一个文字值,我必须在OverloadedStrings
启用时显式添加类型签名:
这种必要性的原因很明显,我想OverloadedStrings
旨在简化将文字值传递给具有严格类型签名的函数,从而使开发人员无需在需要值pack
的任何地方编写 s 。Text
问题是有什么方法可以将所有没有类型签名的字符串文字默认为Text
, 或String
? 或者我应该将我的代码拆分为通用函数(具有ToJSString
类型约束)和任意函数,它们的参数具有严格的类型签名?