我刚刚开始研究Haskell中的功能反应编程世界,我想在反应环境中尝试GUI编程(使用gtk,因为实质性绑定).
现在,我一直在看Grapefruit,Reactive-Banana和Buster,我想要任何证明使用任何一个或其他包装的喜悦/恐惧.
我所拥有的只是这些初步的选择:
我不介意做一些FRP包的绑定给我自己,因为我对抽象的后端想法(Grapefruit有)有一种矛盾的感觉..
虽然我觉得类型理论很有意思,但我也很重视实际程序的简单编码,这似乎让grapfruit记录有点偏离..
也就是说,除非你们当中有些人说服我不这么认为:-)
是否有可能对函数的类型变量设置不等式约束,foo :: (a ~ b) => a -> b如GHC类型族文档中那样,除了不等式而不是相等?
我意识到可能没有直接的方法来做到这一点(因为ghc文档没有列出任何我的知识),但如果根据所有异国情调的类型,这在某种程度上是不可能的,我会感到困惑 - 我已经接触过了.
在我的F#代码中观察到这种行为,我完全感到困惑,这里是从交互式会话中获取的:
Microsoft (R) F# 2.0 Interactive build 4.0.40219.1
Copyright (c) Microsoft Corporation. All Rights Reserved.
For help type #help;;
> type foo = Foo of (string * int);;
type foo = | Foo of (string * int)
> let f = Foo ("bar",42);;
val f : foo = Foo ("bar", 42)
> match f with Foo x -> x;;
val it : string * int = ("bar", 42)
> type bar = Bar of string * int;;
type bar = …Run Code Online (Sandbox Code Playgroud)