小编cha*_*ni2的帖子

用于删除postgreSQL中的重音的功能

可能重复:
PostgreSQL是否支持"重音不敏感"排序规则?

我正在尝试删除重音,所以当我进行SELECT时它会忽略它们.

例:

SELECT * FROM table WHERE
table.id ILIKE 'Jose';
Run Code Online (Sandbox Code Playgroud)

它返回:

José
Jose
Jósé
Jóse
Run Code Online (Sandbox Code Playgroud)

或类似的东西.

我发现这些功能并且它们不起作用,我想可能是因为我使用的是Struts 1.X,请检查它们并告诉我哪里错了或我应该使用哪些其他功能.

第一功能

CREATE OR REPLACE FUNCTION unaccent_string(text) RETURNS text AS $$
DECLARE
    input_string text := $1;
BEGIN

input_string := translate(input_string, 'âãäå???ÁÂÃÄÅ???', 'aaaaaaaaaaaaaaa');
input_string := translate(input_string, 'èééêë??????????', 'eeeeeeeeeeeeeee');
input_string := translate(input_string, 'ìíîïì???ÌÍÎÏÌ???', 'iiiiiiiiiiiiiiii');
input_string := translate(input_string, 'óôõö???ÒÓÔÕÖ???', 'ooooooooooooooo');
input_string := translate(input_string, 'ùúûü????ÙÚÛÜ????', 'uuuuuuuuuuuuuuuu');

return input_string;
END;
$$ LANGUAGE plpgql;
Run Code Online (Sandbox Code Playgroud)

第二功能

CREATE OR REPLACE FUNCTION norm_text_latin(character varying) 
  RETURNS character varying AS …
Run Code Online (Sandbox Code Playgroud)

postgresql function struts-1

25
推荐指数
1
解决办法
2万
查看次数

使用alex/happy with Cabal

我正在为我正在学习的课程编写一个编译器.该类不是专门的Haskell,而是我使用Haskell编写我的编译器和解释器.我有一个cabal包设置,希望我的教授可以轻松运行/编译.我对构建工具字段中的两个可执行文件感到高兴和alex,但是Cabal忽略了这一点,然后抱怨它无法找到Happy和Alex应该生成的模块.如果我手动运行:

alex LimpScanner.x
happy LimpParser.y
Run Code Online (Sandbox Code Playgroud)

然后cabal完美运行.

我以为我让cabal自动运行它们,但也许我记得不完美.

limp.cabal:

-- limp.cabal auto-generated by cabal init. For additional options,
-- see
-- http://www.haskell.org/cabal/release/cabal-latest/doc/users-guide/authors.html#pkg-descr.
-- The name of the package.
Name:                limp

-- The package version. See the Haskell package versioning policy
-- (http://www.haskell.org/haskellwiki/Package_versioning_policy) for
-- standards guiding when and how versions should be incremented.
Version:             0.1

-- A short (one-line) description of the package.
Synopsis:            LIMP Compiler (Compiler Construction course project)

-- A longer description of the package.
-- Description:         

-- URL …
Run Code Online (Sandbox Code Playgroud)

haskell cabal alex happy

13
推荐指数
2
解决办法
3725
查看次数

GHC版本检入代码

我正在为Alex做贡献,它显然取决于很多库,应该编译很多版本.

我需要使用一个只能从GHC 7.6.1获得的函数来更好地处理错误.所以我想使用an #if ...来导入所述函数,否则,我会以不同的方式处理错误.

我见过一些:

#if __GLASGOW_HASKELL__ >= 610
import Control.Exception ( bracketOnError )
#endif
Run Code Online (Sandbox Code Playgroud)

所以我做了:

#if __GLASGOW_HASKELL__ >= 761
import Text.Read ( readMaybe )
#endif
Run Code Online (Sandbox Code Playgroud)

认为这761是GHC版本的别名7.6.1,当我构建cabal包并尝试它时,即使我使用Glorious Glasgow Haskell编译系统版本7.8.4,该函数也不会被导入.

所以在使用程序试用之后,我发现它7.8.1标识__GLASGOW_HASKELL__708.

{-# LANGUAGE CPP #-}
module Main where

#if __GLASGOW_HASKELL__ == 708
ver = "==708"
#else
ver = "/=708"
#endif

main = putStrLn $ ver
Run Code Online (Sandbox Code Playgroud)

运行它:

$ runhaskell if.hs
==708
Run Code Online (Sandbox Code Playgroud)

我怎么知道我应该使用什么价值7.6.1 …

haskell ghc

12
推荐指数
3
解决办法
2297
查看次数

将命名实例用于其他实例

我正在尝试在运算符和运算符上为我的自定义数据类型创建一个SemigroupVerifiedSemigroup实例:Bool&&||

%case data Lógico = Cierto | Falso

(&&) : Lógico -> Lógico -> Lógico
(&&) Cierto Cierto = Cierto
(&&) _ _ = Falso

(||) : Lógico -> Lógico -> Lógico
(||) Falso Falso = Falso
(||) _ _ = Cierto
Run Code Online (Sandbox Code Playgroud)

所以我先制作一个命名实例Semigroup&&运营商:

-- Todos
instance [TodosSemigroup] Semigroup Lógico where
    (<+>) a b = a && b
Run Code Online (Sandbox Code Playgroud)

但在制作VerifiedSemigroup实例时,如何告诉Idris使用TodosSemigroup实例Lógico? …

formal-verification named-instance typeclass idris semigroup

11
推荐指数
1
解决办法
225
查看次数

IO字符串列表

我是Haskell和FP的新手,所以这个问题可能看起来很愚蠢.

我的main函数中有一行代码

let y = map readFile directoryContents
Run Code Online (Sandbox Code Playgroud)

其中directoryContents的类型[FilePath].这反过来(我认为)使y类型[IO String],所以一个字符串列表 - 每个字符串包含每个文件的内容directoryContents.

我有一个函数写在另一个模块中工作[String],String但我现在不清楚如何调用/使用它们因为y是类型[IO String].有什么指针吗?


编辑:

有人向我建议我要用mapM而不是map,所以:

let y = mapM readFile directoryContents,y现在是类型IO [String],我该怎么做?

io haskell

9
推荐指数
1
解决办法
2945
查看次数

cabal安装cabal-install无法解决依赖关系

我刚刚做了brew install haskell-platform,它安装了Glorious Glasgow Haskell编译系统,版本7.6.3.

$ cabal --version
cabal-install version 1.16.0.2
using version 1.16.0 of the Cabal library

$ cabal update
Downloading the latest package list from hackage.haskell.org
Note: there is a new version of cabal-install available.
To upgrade, run: cabal install cabal-install

$ cabal install cabal-install
Resolving dependencies...
cabal: Could not resolve dependencies:
trying: cabal-install-1.20.0.3
rejecting: zlib-0.5.4.1, 0.5.4.0, 0.5.3.3, 0.5.3.2, 0.5.3.1, 0.5.2.0, 0.5.0.0,
0.4.0.4, 0.4.0.3, 0.4.0.2, 0.4.0.1, 0.4, 0.3, 0.2 (global constraint requires 
installed instance) …
Run Code Online (Sandbox Code Playgroud)

homebrew haskell cabal haskell-platform osx-mavericks

8
推荐指数
1
解决办法
3768
查看次数

另一个类的实例的Show实例

我有以下课程:

class SappState s where
    getTable   :: s -> SymbolTable
    getStack   :: s -> Stack Scope
    getScopeId :: s -> ScopeNum
    getAst     :: s -> Program
    putTable   :: SymbolTable -> s -> s
    putStack   :: Stack Scope -> s -> s
    putScopeId :: ScopeNum    -> s -> s
    putAst     :: Program     -> s -> s
Run Code Online (Sandbox Code Playgroud)

我总是showdatas表示这个实例class在它定义的函数.所以我用以下代码概括了它:

instance (SappState s) => Show s where
    show st = showT ++ showS ++ showI ++ …
Run Code Online (Sandbox Code Playgroud)

haskell

6
推荐指数
1
解决办法
366
查看次数

使用quickCheck

我为foldl编写了一个实现,并想检查它是否有效,我尝试了一些案例,它似乎运行良好,但我想确定.

我读了一下quickCheck并试了一下,但我似乎无法使它工作,这就是代码

foldl'' :: (b -> a -> b) -> b -> [a] -> b

test :: Eq b => (b -> a -> b) -> b -> [a] -> Bool
test f e ls = foldl'' f e ls == foldl f e ls
Run Code Online (Sandbox Code Playgroud)

当我运行quickCheck test它时会抛出以下错误:

No instance for (Show (b0 -> a0 -> b0))
  arising from a use of `quickCheck'
Possible fix:
  add an instance declaration for (Show (b0 -> a0 -> b0))
In the expression: …
Run Code Online (Sandbox Code Playgroud)

haskell fold quickcheck ghci

5
推荐指数
2
解决办法
1569
查看次数

为类型实例化Monoid

我在Haskell中有一个Type来使Map有一个与键相关联的值.

如果我编译以下代码:

type Mapa k v = Map k [v]

instance Monoid (Mapa k v) where
  --mempty :: Mapa k v
  mempty = DM.empty
  --mappend :: Mapa k v -> Mapa k v -> Mapa k v
  mappend a b = DM.unionWith (++) a b
Run Code Online (Sandbox Code Playgroud)

GHCi将抛出:

Illegal instance declaration for `Monoid (Map k [v])'
  (All instance types must be of the form (T a1 ... an)
   where a1 ... an are *distinct type variables*,
   and each type variable appears at …
Run Code Online (Sandbox Code Playgroud)

haskell ghci monoids

5
推荐指数
1
解决办法
173
查看次数

得到Parsec的左输入

我想知道是否有办法在Parsec停止解析后从Parsec获得剩余输入,无论是成功还是失败的解析,也许这个签名:

parseRemaining :: Stream s Identity t => Parsec s () a -> SourceName -> s -> (s, Either ParseError a)
Run Code Online (Sandbox Code Playgroud)

我们得到的不是一个Either ParseError a,我们另外得到剩下的Stream s

haskell parsec

5
推荐指数
1
解决办法
300
查看次数