所以我正在做一个相当复杂的javascript/html客户端,有很多ajax调用和callback-ism的其他参与.我很乐意为此目的使用Fay.我知道榆树.试过它并喜欢FRP元素.现在我想知道Fay是否有类似的结构.
此时Fay的FRP有没有具体的例子?
编辑:迁移到Programmers.Stackexchange:https://softwareengineering.stackexchange.com/questions/186102/functional-reactive-programming-is-fay-expressive-enough
javascript haskell functional-programming reactive-programming fay
如何定义'catchOutput'以便仅运行主输出'bar'?
也就是说,如何分别访问输出流(stdout)和io动作的实际输出?
catchOutput :: IO a -> IO (a,String)
catchOutput = undefined
doSomethingWithOutput :: IO a -> IO ()
doSomethingWithOutput io = do
(_ioOutp, stdOutp) <- catchOutput io
if stdOutp == "foo"
then putStrLn "bar"
else putStrLn "fail!"
main = doSomethingWithOutput (putStr "foo")
Run Code Online (Sandbox Code Playgroud)
最好的假设的"解决方案",我发现迄今包括转向标准输出,受此启发,以文件流,然后从该文件中读取数据(从文件中写入后直接除了是超丑我一直没能读是否可以创建一个不必存储在文件中的"自定义缓冲流"?).虽然这感觉'有点像'侧轨.
另一个角度似乎使用'hGetContents stdout',如果它应该做我认为应该做的事情.但我没有得到stdout的阅读许可.虽然谷歌上搜索它似乎表明它已被使用.
我将在一个项目上工作,我需要同时处理依赖项和依赖项目.我已经安排好它,以便依赖关系与我的依赖程序并排放置在单独的回购中.
现在,如果我在依赖项中进行更改,我希望此更改在依赖项目中自动"被识别".我想我可以通过(1)编辑leksah使用的ghc搜索路径来指向依赖存储库(如何?)或(2)通过使依赖关系在更改时自动重新安装在系统上来实现这一目标(如何? ).
管理这个的最好方法是什么?
(这是我的第一个这种规模的haskell项目和我在Leksah的第一个项目)
我们正在做一个相当大的Apollo项目。我们的api的简化版本如下所示:
type Operation {
foo: String
activity: Activity
}
type Activity {
bar: String
# Lots of fields here ...
}
Run Code Online (Sandbox Code Playgroud)
我们已经意识到分裂Operation,Activity没有好处,而且增加了复杂性。我们想将它们合并。但是有很多查询都在代码库中采用了这种结构。为了使过渡逐步进行,我们添加了@deprecated指令:
type Operation {
foo: String
bar: String
activity: Activity @deprecated
}
type Activity {
bar: String @deprecated(reason: "Use Operation.bar instead")
# Lots of fields here ...
}
Run Code Online (Sandbox Code Playgroud)
有什么方法可以突出显示将来的弃用?最好通过在(在测试环境中)运行使用已弃用字段的查询时在浏览器控制台中打印警告?
所以我有一个规范化的表,其中包含一些我希望放入Solr索引的数据,类似于此
+----+--------------+--------------+---------+
| id | name | attribute | value |
+----+--------------+--------------+---------+
| 1 | Apple | color | green |
| 1 | Apple | shape | round |
| 1 | Apple | origin | Belgium |
| 2 | Motorbike | type | fast |
| 2 | Motorbike | nr of wheels | 2 |
| 3 | Office chair | color | grayish |
| 3 | Office chair | spins | yes |
+----+--------------+--------------+---------+ …Run Code Online (Sandbox Code Playgroud) 因此,如果我想在ghci中运行线程应用程序,我只需-threaded在启动时传递给ghci.但是从Emacs内部启动时我该怎么做?我可以为此自定义Emacs haskell模式吗?
我想是的,但我找不到任何指示?我找不到emacs lisp的任何参考文档.只有Haskell维基但没有参考.虽然我正在学习,但我对(Emacs)lisp并不是很熟悉.
我想如果我能找到安装haskell-platform的默认emacs软件包的位置,我可以通过源读取来试图找出它.
我正在尝试为以下数据结构创建镜头.我正在使用lens-family.
data Tree = Tree {
_text :: String,
_subtrees :: [Tree]
} deriving (Show,Eq,Read,Generic)
Run Code Online (Sandbox Code Playgroud)
我想出于各种原因避免使用Template Haskell.首先,它似乎不适用于我的ghc版本(7.8.3),这是另一个(超出范围)问题.
为记录制作镜头并不难.
text :: Lens' Tree String
text f (Tree text' subtrees') =
(\text'' -> Tree text'' subtrees') `fmap` (f text')
subtrees :: Lens' Tree [Tree]
subtrees f (Tree text' subtrees') =
(\subtrees'' -> Tree text' subtrees'') `fmap` (f subtrees')
Run Code Online (Sandbox Code Playgroud)
但似乎镜头系列没有列表的默认镜头.我认为这是可能的.有lens包裹.这些是我失败的尝试:
import Lens.Family2
import Lens.Family2.Unchecked
-- List lenses
_last :: Lens [a] [a'] a a'
_last f l = …Run Code Online (Sandbox Code Playgroud) 所以我正在使用Data.VectorSpace,我正在尝试扩展force-layout.
现在我想生成一个多态的'1'标量.也就是说,一个标量,如果它与一个向量相乘,将生成相同的向量,而不管该向量的类型(参数).可能吗?有没有有用的解决方法?
这是一个更具体的代码示例(它继续从我在这里使用的代码):
data Particle v = Particle { _pos :: Point v
, _vel :: v
, _force :: v
, _mass :: Scalar v
}
-- .. standalone Show and Eq omitted
initParticle :: AdditiveGroup v => Point v -> Particle v
initParticle p = Particle p zeroV zeroV unitScalar
unitScalar = undefined
-- Should always be true:
testInit :: Point (Double,Double) -> Bool
testInit p = ((_mass (initParticle p)) == 1::Double) …Run Code Online (Sandbox Code Playgroud) 我真的很喜欢eslint用于es6项目。以前,我已将其用于新项目。现在,我想将其添加到旧项目中。
一口气解决所有先前存在的皮棉问题是费力的。我可以配置eslint(中的.eslintrc.js)以仅检查已使用/* eslint-enable */或类似方式显式启用它的文件吗?
主要问题:我安装了多个版本的软件包.在ghc/ghci中,如何将包中的模块作为依赖项的模块,我怎么知道在编译或运行时使用的是哪个版本?
相关问题:如果我正在安装一个具有依赖关系的cabal包,该包可以通过多个版本的包来满足.将使用哪个版本?最新版本?
注意:我可能不需要将Scalar添加到Eq,虽然它可以解决问题,如果我能弄清楚如何做到这一点.
所以我正在尝试向ForceLayout模块添加一些功能.像粒子一样向粒子添加质量:
data Particle v = Particle {
_pos :: Point v
, _vel :: v
, _force :: v
, _mass :: Scalar v
}
deriving (Eq, Show)
Run Code Online (Sandbox Code Playgroud)
但Scalar不在Eq或Show中!所以这不会编译.Mass应该是与其他向量"兼容"的标量.我该怎么调和呢?我不明白打字家庭足以分析这种情况.我已经尝试了,但他们很难掌握.不确定是否有必要或可能将标量添加到Eq.