问题标签 [fay]

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 回答
228 浏览

haskell - 不明白 Fay 中的这种 liftM2 行为

我有这个行为符合预期的haskell代码:

然而,当转换为 Fay 时,它不会进行类型检查:

编译错误是:

我不完全关注这里的问题。实际上,我什至尝试在 GHC 代码中删除 Control.Monad 的导入,并将 liftM2 粘贴到 Fay 代码中,但它仍然可以正确地进行类型检查......在 Fay 中使用诸如 liftMx 等函数的任何选项,或者我错过了完全在这里?

这是 Fay 0.16.0.3... 也许我应该尝试升级到 0.17?

0 投票
1 回答
215 浏览

haskell - fay 生成文件的大小

我尝试了 fay-jquery 并且包含的​​示例 test.hs 文件导致了 150 kb 的 js 文件。即使使用闭包编译,它仍然是 20 kb。

我知道它必须带有运行时、stdlib 和 jquery 包装器。

我可以告诉 fay 不要生成 std​​lib(--no-stdlib 和 --no-builtins 标志)。但我不知道如何告诉它不包含 jquery 代码。

所以我的问题是,我怎样才能将这些静态部分拆分成一个单独的 js 文件并且只生成特定于模块的代码?

这样大部分代码将只加载一次(并缓存),我可以为单独的网页创建许多较小的 js 文件。

0 投票
1 回答
145 浏览

fay - 使用 Fay 编译库:隐藏包 'base'

我在使用 Fay 将工作中的 Haskell 库编译为 JavaScript 时遇到问题。

我相信我已经使用 cabal-dev 成功安装了 Fay,并设置了 HASKELL_PACKAGE_SANDBOX 环境。

当我尝试编译时,我得到以下信息:

使用ghc-pkg list我可以看到它base-4.6.0.1已暴露。

关于下一步尝试什么的任何提示?

谢谢!ñ

0 投票
1 回答
180 浏览

jquery - 如何在 Fay 中获取“this”对象?

鉴于此 HTML:

我正在尝试使处理程序依赖于“this”的值,例如以下 JavaScript 代码:

如何在Fay中做到这一点?我没有找到执行此操作的 API。看来直接从 main 调用 ffi 是不可能的:

我得到“未定义 Test$ffi”。我设法使用以下代码调用 ffi:

但是现在“this”指的是一些 Fay 特定的对象,并且没有属性“id”。

0 投票
3 回答
508 浏览

macos - 无法在 Mac OS X Mavericks 上安装 Fay

我正在努力cabal install fay fay-base。但它失败了,这是日志:

请帮忙。

0 投票
1 回答
196 浏览

javascript - Fay,渲染循环和鼠标事件

序幕。我是 Haskell 和函数式编程的新手,但我忍不住用 Haskell 编码,因为它太令人兴奋了!因此,我的问题可能非常简单和/或微不足道。我还在读“Learn You a Haskell for Great Good”,Monads 还在路上。

考虑以下行为:

  • 创建事件堆栈(简单的数组)
    • 监听mousemove事件,当事件触发时,将它们压入堆栈
  • 运行渲染循环:
    • 用于requestAnimationFrame启动循环
    • 每次检查是否有堆叠的事件
    • 从堆栈中获取最后一个事件,用它做一些东西并渲染
    • 空栈
    • 请求下一帧

我无法意识到如何从事件中获取感兴趣的价值,例如 pageX 或 clientX,看起来我必须对数据定义做一些事情,而我坚持下去。请帮忙。

PS 我也无法理解如何检查外部函数的结果,例如,当我尝试获取 DOM 元素时,结果可能是 element 或null,因此,比如说,getElById不纯,我需要检查我得到的结果。如何实现?似乎我可以使用类似的东西:data Element = Null | Element ...然后模式匹配结果,但是如何让外部函数知道预期的结果?

更新
这里所需逻辑的工作示例:

0 投票
1 回答
175 浏览

haskell - 您的 FFI 声明需要类型签名

有时我会遇到奇怪的问题,请考虑以下示例:

这编译:

它也是这样:

但是,如果我将辅助函数放在 where 块中,则会出现编译错误:

fay: your FFI declaration needs a type signature pageX = ffi "%1['pageX']" fay: your FFI declaration needs a type signature: getParent = ffi "%1.parent()"

例如

请注意,traceEventCoords在第一个示例中不调用此问题。它是一个错误吗?

PS 第二个例子只是一个例子,最终的代码会被重构一点,但它是为了演示目的。

0 投票
1 回答
119 浏览

haskell - Fay:无法解析限定名 ffi?

我已经安装了:

  • fay-0.19.0.1
  • fay-base-0.19

我正在尝试编译

并得到

请注意,我可以使用 fay-jquery、fay-text 等进行编译。编译和运行的完整源文件(使用 fay-base)并在执行它们时执行我期望它们执行的操作。但是,一旦我尝试ffi在其中任何一个中使用,我就会收到此错误。

fay-jquery、fay-dom 和其他使用 ffi 的包在我导入它们时似乎表现良好。

我不知道还有什么要说的?我在运行 Ubuntu 的 ghc 7.6.3 上。

帮助将不胜感激:)

0 投票
1 回答
175 浏览

haskell - 在 Fay 中将 Char 转换为 ASCII 码

有没有办法将类型值转换为CharFay 中的数字 ASCII 代码?

(Haskell Prelude 提供了函数fromEnum和等效函数ord,但我在 Fay Prelude 中没有看到任何类似的东西。)

包的文档fay-base记录了很多类型类,但由于 Fay 不支持类型类,我认为fromEnum也不支持?

0 投票
1 回答
248 浏览

haskell - 在 cabal 沙盒中使用 Fay

我刚刚开始使用 cabal 沙箱和 Fay。然而,Fay 似乎无法自动找到这些包裹,大概是因为它们不在“全球”阴谋集团包裹数据库中。我尝试遵循此 wiki 页面上的建议但未成功,对我来说,它看起来像:

但是Fay仍然抱怨它cannot find package fay-base。有什么我可以做的吗,或者我必须在沙盒之外安装 Fay 吗?