问题标签 [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.
javascript - 函数式反应式编程——Fay 的表达力够吗?
因此,我正在做一个相当复杂的 javascript/html 客户端,其中包含许多 ajax 调用和其他回调主义的参与。我正在考虑将 Fay 用于此目的。我知道榆树。试过了,喜欢 FRP 元素。现在我想知道在 Fay 中是否有类似的结构。
目前Fay中有FRP的具体例子吗?
编辑:迁移到 Programmers.Stackexchange:https ://softwareengineering.stackexchange.com/questions/186102/functional-reactive-programming-is-fay-expressive-enough
haskell - 在 Fay 中包含文件/目录的正确方法是什么?
我正在尝试使用 Fay 将 haskell 编译为 JS,并在--include
选项之后使用一个目录,如下所示:
fay --include src\Tmv src\Tmv\Client\Main.hs
在 src\Tmv 中有一个 SharedTypes.hs 文件,它定义了一个Tmv.SharedTypes
在 Client\Main.hs 中使用的模块。我收到以下错误:
-v 选项不起作用。我已经尝试了参数的几种变体,例如。绝对路径、引号、转义(双)反斜杠。
配置:fay 0.10.1.0、ghc 7.4.2 (i386)、Windows 7 x64
haskell - cabal 用 fay 安装麻烦
我正在尝试运行cabal install fay fay-base
。但是,我收到以下错误:
当它要求我“以正常方式安装一次,然后以所需方式安装”时,我不确定它要求我做什么。
有任何想法吗?
原帖:
我正在尝试运行cabal install fay fay-base
。但是,我收到以下错误:
我在另一个包安装时收到了这个错误,但我不记得是哪个(我相信它是游戏包之一,所以更容易放弃)。我试过用谷歌搜索 -lHSsplit 并且找不到任何帮助。
有谁知道我需要安装什么依赖项?
cabal install split
这已通过按照 Daniel Fischer 的建议安装 split 来解决。
提前致谢!
haskell - Fay 代码中的持久模型类型
我正在使用 Yesod 脚手架站点(yesod 1.1.9.2),昨天花了几个小时来了解 Fay 和 Yesod 的基本用法。我想我现在了解了使用 Fay 向页面添加大量 AJAX 功能的预期工作流程(我在这里会有点迂腐,因为其他人可能会发现逐步的帮助):
- 将数据构造函数添加
Example a
到SharedTypes.Command
. - 在 中的表达式
case readFromFay Command of ...
中Handler.Fay.onCommand
,添加一个与我的新数据构造函数匹配的案例。 - 在 /fay 中创建一个 Fay 文件“Example.hs”,以 fay/Home.hs 为模板。在这里的某个地方,使用表达式
call (Example "foo") $ myFayCallback
。 - 为将使用我正在生成的 Javascript 的页面定义一个路由和处理程序。在处理程序中,使用
$(fayFile' (ConE 'ScriptR) "Example.hs")
.
我的问题:在当前的 Yesod/Fay 架构中,我应该如何与我的 Fay 代码共享我的持久模型类型?
在 Fay 文件中使用import Model
不起作用 - 当我尝试加载使用此 Fay 文件的页面时,我在浏览器中收到错误(我猜是 Fay 提醒我错误的标准方式),表明它不能找到模块“模型”,但它只搜索了以下目录:
- projectroot/cabal-dev//share/fay-0.14.2.0/src
- projectroot/cabal-dev/share/fay-base-0.14.2.0/src
- projectroot/cabal-dev/share/fay-base-0.14.2.0
- 项目根/fay
- projectroot/fay-shared
我还尝试在 SharedTypes.hs 中导入和重新导出模型,但这产生了相同的错误。
有没有办法做到这一点?如果不是,为什么不呢?(我是 Haskell 和 Yesod 的相对菜鸟,所以回答“为什么不呢?”这个问题真的很有帮助。)
编辑:
我刚刚意识到在这个问题的标题中提到 Persistent 可能会产生误导。为了更清楚我想要做什么:我只想能够使用 Yesod 为我的模型定义的相同数据类型在我的 Fay 代码中表示数据。例如,如果我在 config/models 中定义了一个模型......
...我希望能够定义一个接收和/或返回类型值的 AJAX“命令”,Foo
并让我的 Fay 代码在Foo
s 中处理,而无需编写任何反序列化代码。我知道我将无法直接从我的 Fay 代码中使用 Persistent 的任何查询功能;我只在标题中提到了 Persistent,因为我将 Model.hs 和 config/models 中的所有内容都与 Persistent 联系在一起。
jquery - Fay JQuery 使用元素数组
首选方法是什么,如何计算选择器选择的元素数量?
我能想到的一种方法是调用 JQuery 的size
:
另一种方法是从函数调用中获取列表,然后计算元素。检索元素的函数类型可能是:
有谁知道,如何实现?如何描述 javascript 类型和 haskell 类型之间的映射?
node.js - 需要来自nodejs的fay代码
是否可以在 nodejs 的服务器端从其他简单的 javascript 文件中需要 fay 编译的模块?那太好了。也许编译器中有一些选项可以生成与 commonjs 兼容的模块?
haskell - 与 Fay 并行的多个 ajax 查询
我正在寻找以并行方式运行两个 AJAX 调用的移植 JS 代码,但在操作之前都需要完成这两个调用。使用 JQuery,您可以:
现在我不确定如何处理 Fay。haskell 的多线程部分不可用。我真的不想要一个状态单子,因为我希望两个提取并行运行,而不是顺序运行。
我在 Fay 的源代码中发现了这个例子,Cont.hs。我不确定它是否能真正解决问题,但无论如何如果我只运行“fay Cont.hs”它就不会编译;它抱怨不知道 GHC.Base.Monad。这是 Fay 的现任 GIT 负责人。
编辑:如果可能的话,我想取悦 Haskell 语义,如果不是......那么是的,包装 jquery 的“then”。我不确定如何使用 Fay 实现延续或 FRP,我们将不胜感激(对于 FRP ,Fay 是否足够表达是值得怀疑的)。因此,作为第二种选择,我只包装“then”,但如果可能的话,我真的希望它像 JS 那样接受任意数量的并发 ajax 请求(可能通过数组),这可能很难实现。我会自己试一试,但我想我不会成功。
我在 fay-jquery 绑定中看到了这条评论:
我确实设法编译了 Cont.hs,我不得不使用 --no-ghc 标志。所以我会检查一下,虽然标志禁用了类型检查,但对此并不疯狂。
当我确信 Haskell 作为一种语言能够更好地解决此类问题时,不得不依赖 JS 库来进行此类操作是令人沮丧的。
EDIT2:所以看来我想要的是协程。我已经看到一些Haste代码在做相关的事情,但并没有完全做到这一点。我也会接受 Haste 或 GHCJS 解决这个问题。
EDIT3:在正常情况下,Haskell 似乎这样做了;我想它可以与 GHCJS 和 Haste 一起使用,但在 Fay 中,我猜它可能必须是 JS 的包装......
fay - Fay:包含另一个 Fay 文件?
我有一个 Fay 文件,它是我的程序的核心,但是我需要一些帮助来实现我的逻辑,例如替换子字符串的方法。据我了解,如果我需要Hackage的许多Haskell库直接提供的方法,我不能使用那些Haskell库,但我必须将代码复制粘贴到我的项目中。所以这就是我所做的,我将“替换”函数与 MissingH 库中的其他助手一起复制粘贴到我项目的一个新文件中:Utils.hs。
Utils.hs 在 Fay 编译时没有问题。此外,我将它导入到我的主 Fay 文件中,并且我得到了一个主项目文件的 JS 文件,没有问题。但是在运行时我收到以下错误:
我认为 Fay 不会在我的主 JS 文件中包含辅助文件中的代码,因此我将两个 JS 文件都包含在加载 HTML 中。为了更加确定当我加载主文件时,utils文件被加载,我像这样加载它:
但尽管如此,我仍然得到错误。我尝试使用“--library”编译 Utils.hs,但没有帮助。
所以我的问题是,我需要哪种设置来实现生成的 JS 将找到我放在另一个 HS 文件中的辅助函数,知道在编译时,Fay(显然)可以毫无问题地找到它们?网上有这种设置的例子吗?我发现的大多数 Fay 使用都将所有代码都放在一个 HS 文件中,尽管它们经常使用来自 cabal 的外部 Fay 代码,例如 fay-jquery。就我而言,仅仅为这些简单的助手建立一个阴谋集团项目将是矫枉过正。
fay - fay:可以对字符串进行排序吗?
我似乎无法成功地用 Fay 对字符串进行排序。我意识到这与 Fay 不支持类型类的事实有关,但如果这不起作用,那似乎真的很痛苦......
输出是:
如果我理解正确,我无法自己定义类型类的实例,因为 Fay 不支持类型类(另外我猜如果 Fay 开发人员一开始就会这样做)。那么是否有解决方法,或者我必须使用 JS FFI 来进行字符串排序?
编辑: Jan Christiansen 的答案似乎是正确的:我可以使用“sortBy”进行排序,这乍一看似乎是正确的:
编译: