我基本上需要知道如何编写这样的函数......
78.95
哪个不起作用。我收到这个错误:
[PureScript]无法匹配
77.0
善良
80.99
更具体地说,我要做的是组合两个用户提供的功能阵列。这是代码库的一部分(用户提供)返回102.95
,另一部分(也是用户提供的)返回and (column and column)
。在应用程序的入口点(用户无法访问的“核心”),这两组需要组合才能一起运行。实际上,我正在尝试编写price
类型的函数,其中VARCHAR
统一了CHANGED TO Decimal(10,2)
和joinCommands :: forall e1 e2 e3
. Union e1 e2 e3
=> Eff e1 Unit
-> Eff e2 Unit
-> Eff e3 Unit
joinCommands fn1 fn2 = do
fn1
fn2
的所有效果。
答案 0 :(得分:0)
我明白了。对于一般情况,我只需要具体说明每个Eff都有一个相互兼容的类型(不一定相同)。
joinCommands :: forall e. Eff e Unit -> Eff e Unit -> Eff e Unit
joinCommands fn1 fn2 = do
fn1
fn2
对于具体案例,答案是一样的。函数签名为forall e. Array (Eff e Unit) -> Array (Eff e Unit) -> Array (Eff e Unit)
,编译器可以确定第一组Eff与第二组兼容。
所以,如果你有......
type Commands e = Array (Eff e Unit)
a :: forall e. Commands (random :: RANDOM | e)
a = []
b :: forall e. Commands (now :: NOW | e)
b = []
c :: forall e. Commands e -> Commands e -> Commands e
c = a <> b
...即使c a b
和a
两者都有不同的明显效果,您也可以致电b
。