问题标签 [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.
xmlhttprequest - 使用 GHCJS XHR 发送二进制数据
我有一个需要在 GHCJS 中通过 XHR 发送的 ByteString,但我一生都无法弄清楚如何将该 ByteString 放入 XHR 的 RequestData
显然TypedArrayData
是我需要使用的,但我完全没有运气弄清楚如何将 ByteString 转换为适合其中的内容。我看着这个,我尝试了这样的事情。
但由于某种原因,我遇到了一个奇怪的错误。
据我所知,这些类型没有理由不兼容。
haskell - 为持续可测量的现象创建行为
我想Behavior t a
从 an创建一个IO a
,其预期语义是每次行为为sample
d 时都会运行 IO 操作:
我希望我可以通过执行measurement
in a来做到这一点pull
:
然而,结果Behavior
在初始阶段后永远不会改变measure
。
我能想出的解决方法是创建一个Behavior
“足够频繁”更改的虚拟对象,然后创建一个虚假的依赖项:
然后按预期工作;但由于Behavior
s 无论如何只能按需采样,因此没有必要这样做。
创建一个Behavior
连续的、随时可观察的现象的正确方法是什么?
haskell - 表示时间戳
我想代表来自HTMLMediaElement
. 它的定义特征是:
- 它的值表示为
Double
- 可以随时使用
getCurrentTime :: IO Double
(部分应用于给定的HTMLMediaElement
)查询它 - 它可能会不断变化(无论何时播放媒体播放器)
我最初的计划是将其表示为每次观察时都会Behavior t Double
重新运行IO Double
,但效果并不好。
我尝试过的事情:
- 如本问题的解决方法部分所述,使用
Behavior
以固定频率在引擎盖下刺激的 - 传递一个
Event t ()
表示所需采样频率的,并返回一个Event t Double
包含重合时间戳的
我也不喜欢——第一个要么将行为(抱歉)与我的特定用例(如果我使用我将在我的应用程序中使用的最终采样频率)过度结合,要么看起来很浪费(如果我使用某些东西)就像创建时的 1 kHz 采样Behavior
,然后在应用程序端以 60 Hz 采样),如果您想以不同的采样率对时间戳做不止一件事,第二个是非常不灵活的。
haskell - 如何使用 ghcjs 减少(增量)编译时间?
我有一个使用 ghcjs 的小项目,目前最好的增量重新编译时间为 8 秒,源代码只有区区 637 行(按 计find -L . -name '*.hs' | xargs wc -l | grep total
)。
最严重的违规者是最后Linking client/Main.jsexe
一步,这需要 3.8 秒,并且在每次增量构建时都会发生。
第二个最严重的违规者是一个Linking Template Haskell
步骤,大约需要 2 秒。这也发生在每次增量重建中,它来自于有几个foreign import javascript
声明。即使我将这些声明移到一个单独的模块/文件中,我再也不会接触到,接触代码库中任何文件的增量构建也会导致这个链接步骤发生。
最后几秒钟来自实际编译我的源文件。把它弄下来也很好,但这不是一个问题。
如何实现更紧密的编译/反馈循环?
haskell - 将 requestAnimationFrame 转为 Event t()
使用 Reflex-DOM,我想Event t ()
在浏览器准备好绘制下一帧时触发,即触发时requestAnimationFrame
触发。我试过这样:
我的测试应用程序如下:
但是,计数并没有增加。然而,在浏览器的 JS 控制台上,我确实看到了两者about to fire the event
并event fired
重复打印。
haskell-stack - ghc-mod 是否支持 ghcjs?
截至 2016 年 5 月,ghc-mod 是否支持使用 ghcjs 编译的项目?
我意识到在很多情况下,源是相同的,但在使用 ghcjs-dom 库时情况并非如此。
我目前有 2 个项目文件夹,配置了堆栈。从这些文件夹之外:
完美运行。这里的stack.yaml文件指定了ghc-7.10.2
失败。这里的stack.yaml文件指定了ghcjs-0.2.0.0_ghc-7.10.2
这是预期的行为吗?我无法告诉 frrm 功能请求和 wiki 的当前状态是什么。
haskell - 从堆栈安装 ghcjs
我通过堆栈安装了 GHC(因此stack ghc -- --version
显示 GHC-7.10.3)
一些资源表明ghcjs
有些实验性(尽管在进一步的阶段)。
看着http://docs.haskellstack.org/en/stable/ghcjs/我想也许我可以找到stack.yaml
并改变它。
要将 GHCJS 与 stack >= 0.1.8 一起使用,请将 GHCJS 版本放在 stack.yaml 的编译器字段中......然后
stack setup
我们被告知看config.yaml
哪个看起来同样空白。这对不对,我是不是走上了死胡同?
我只想ghcjs
用堆栈安装。
postgresql - GHCJS 是否可以重用 Template Haskell 生成的代码
此时 GHCJS 无法编译postgresql-simple
包(参见 [ 1 ])。我想使用persistent
包来生成数据库模型。我想知道是否可以使用 GHC 本身编译模型并在 GHCJS 源代码中重用由 Template Haskell 生成的代码?
我已经为我的问题找到了解决方法,但是这个问题仍然相关。我会让它打开几天,如果没有人回答如何使用 Template Haskell 生成的代码,我会关闭它。我已将生成的代码粘贴在底部。
更新:
thomie建议我-dth-dec-file
标记,它可以写为模型文件中的语言编译指示,例如{-# OPTIONS_GHC -dth-dec-file #-}
. 然后运行命令后,文件夹下stack build
有一个文件。这个文件看起来像有效的 Haskell,但是 GHC 因为解析错误而拒绝了它(见底部的代码)。但是,我找到了一种使用 GHCJS 编译模型的方法。我在 cabal 文件中添加了条件以从依赖项中删除:Model.th.hs
.stack-work/dist/<arch>/<cabal-version>/build/src
postgresql-simple
由 Template Haskell 生成的代码(为了测试此代码,我将此文件复制到项目源文件夹中并在顶部添加了模块声明)
错误信息报告解析错误->
在线开始GHC.Base.Nothing ->
haskell - 如何将列表转换为 JSVal?
我正在尝试为一些 JS 库构建 JS FFI 以使其与 GHCJS 一起使用,我需要将列表转换为单个 JSVal
但得到错误
显然,我需要 concat 函数,但使用mconcat
给出
也许,有更简单的方法可以正确地进行这种转换?
javascript - 使用 Haskell 的 javascript 库
我对 Haskell 相当陌生。最近,我听说了一个名为 GHCJs 的编译器,您可以在其中使用 Haskell 编写代码,然后将其编译为 Javascript。
我对使用诸如three.js 和webgl 之类的库来制作很酷的交互式3d 动画很感兴趣。使用 GHCJ 时是否可以从 Haskell 调用这些 javascript 库?