我需要通过 Haskell 或什至从文件加载以字符串形式执行任意 SQL 命令。
postgresql-simple 库提供execute_和exec用于执行 SQL 命令。问题execute_在于它需要一个Queryas 参数。我确实理解这背后的意图,但我需要执行任意查询。该exec函数可以在没有 a 的情况下调用,Query但没有记录,并且在错误时无异常地静默失败。
如何将 a 转换String为 a Query?
我期望f1是O(i²)并且f2是O(i·log i).这里发生了什么?
import Data.Set
i = 20000
-- should be slow
f1 = [ x | x <- [1..i] , x `notElem` [2..i-1] ]
-- should be fast
f2 = [ x | x <- [1..i] , x `notMember` fromAscList [2..i-1] ]
Run Code Online (Sandbox Code Playgroud)
ghci输出:
*Main> f1
[1,20000]
(7.12 secs, 16,013,697,360 bytes)
*Main> f2
[1,20000]
(44.27 secs, 86,391,426,456 bytes)
Run Code Online (Sandbox Code Playgroud) 我有一个容器类型,叫做X.由于我想要异构列表X,因此它的构造函数是存在于某个类型变量上的类型a.但是,我希望它是Eq类型类的一个实例.一个hackish解决方案看起来像这样:
{-# LANGUAGE GADTs #-}
data X where X :: (Eq a, Show a) => a -> X
instance Eq X where
X x == X y = show x == show y
Run Code Online (Sandbox Code Playgroud)
这个问题最简单(干净)的解决方案是什么?
(X如果它们的类型不同,则不相等.)