我有此功能,其中所有varX
的类型为Maybe Something
:
res <- execute cn "insert into users values ..." [ toField var1
, toField var2
, toField var3
, toField var4
]
我可以用类似的东西来简化吗?我试过这个:
res <- execute cn "insert into my_table values ..." toField <$> [var1, var2, var3, var4]
可能是因为toField
没有返回列表? toField
来自posgresql-simple
答案 0 :(得分:4)
您需要将作为单个参数映射的值显式发送到(sideNavigationController?.rootViewController as? NavigationController)?.pushViewController(MySecondViewController(), animated: true)
。您可以将execute
括在括号中,也可以用toField <$> [var1, var2, var3, var4]
$
答案 1 :(得分:2)
这取决于var1
... var4
是什么
show <$> [Just 1, Just 'a',Just "a",Just 3.1415]
不正确,因为GHC无法统一列表中的类型 - 尽管应用show
后所有内容都是String
另一方面,如果你有
var1,var2,var3,var4 :: Maybe a
即。它们都具有相同的类型(对于某些类型a
,它是类ToField
的一个实例),你可以这样做
res <- execute cn "insert into my_table values ..." (toField <$> [var1, var2, var3, var4])
正如@ChadGilbert已经说过的那样。