小编Rij*_*ijk的帖子

在表达式中使用gu ..

有时我会写这样的代码

solveLogic :: Int -> Int -> Int
solveLogic a b =
    let 
        x = 1
        brainiac
            | a >= x     = 1
            | a == b     = 333
            | otherwise  = 5
    in
        brainiac
Run Code Online (Sandbox Code Playgroud)

每次我都强烈要求编写这些东西而不需要"brainiac"功能,如下所示:

solveLogic :: Int -> Int -> Int
solveLogic a b =
    let 
        x = 1
    in
        | a >= x     = 1
        | a == b     = 333
        | otherwise  = 5
Run Code Online (Sandbox Code Playgroud)

哪个代码更像是"Haskellish".有没有办法做到这一点?

haskell

18
推荐指数
2
解决办法
9038
查看次数

在Windows上将c ++ dll与Haskell-Platform链接,输出'undefined reference'

我是Haskell的狂热爱好者,并且一直坚持在Windows上编译我的小Haskell程序.我的程序使用iconv包,后者又使用用c/c ++编写的外部库.为了让事情有效我有:

  • 运行GNU-Iconv设置并将'bin'文件夹添加到PATH 变量中,其中'libiconv-2.dll'和'libiconv2.dll'位于该文件夹中.
  • 将"LibIconv开发人员文件"提取并复制到Haskell平台位置的"mingw"文件夹中.
  • 然后'cabal install iconv'编译,我安装了cabal包.

现在,当我尝试在Leksah中构建我的模块时,我从'GHC'获得以下消息:

Building norms-parser-0.0.1...
Linking dist\build\norms-parser\norms-parser.exe ...
C:\Documents and Settings\kdv\Application Data\cabal\iconv-0.4.1.0\ghc-7.0.4/libHSiconv-0.4.1.0.a(hsiconv.o):hsiconv.c:(.text+0x7): undefined reference to `_imp__libiconv_open'
C:\Documents and Settings\kdv\Application Data\cabal\iconv-0.4.1.0\ghc-7.0.4/libHSiconv-0.4.1.0.a(hsiconv.o):hsiconv.c:(.text+0x17): undefined reference to `_imp__libiconv'
C:\Documents and Settings\kdv\Application Data\cabal\iconv-0.4.1.0\ghc-7.0.4/libHSiconv-0.4.1.0.a(hsiconv.o):hsiconv.c:(.text+0x27): undefined reference to `_imp__libiconv_close'
collect2: ld returned 1 exit status
Run Code Online (Sandbox Code Playgroud)

有了'GHCi',我也面临一个问题:

ghc.exe: unable to load package `iconv-0.4.1.0'
ghc.exe: C:\Documents and Settings\kdv\Application Data\cabal\iconv-0.4.1.0\ghc-    7.0.4\HSiconv-0.4.1.0.o: unknown symbol `__imp__libiconv_open'
Run Code Online (Sandbox Code Playgroud)

我认为可能的解决方案是将c/c ++头文件正确设置为'mingw'文件夹并将PATH变量设置为'lib'文件,但我对它知之甚少,所以任何帮助都将非常感激.

gcc haskell mingw iconv

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

如何防止控制台窗口关闭在ghc应用程序?

当我的Windows控制台应用程序使用ghc编译结束时,控制台窗口立即关闭.这有点好,但是当我想从中读取一些文本输出时,这不是很好.所以,现在我将这个丑陋的代码添加到我的应用程序中:

    main =
       do
        ...HERE IS THE CODE ...

        putStrLn " $$ Every thing have passed well $$ /n Press Enter "
        _ <- getLine
        return ()
Run Code Online (Sandbox Code Playgroud)

这非常难看,而且当一些错误导致我的应用程序崩溃时,控制台窗口会关闭.另一种在'cmd'控制台中运行程序的方法,但有时候不舒服.处理程序输出有没有好看又方便的方法?

windows console haskell ghc

3
推荐指数
1
解决办法
894
查看次数

从stdio读取输入时不需要的空字符串

只需用简单的计算器进行锻炼.我试图跑到前面,把它包裹在do-while循环中.然后我有一个奇怪的行为 - 在每个新循环上捕获空字符串.人们可以在case ""代码部分看到它.

那么问题 - 发生了什么以及如何处理它?

我可以看到我在代码中的注释行上修改它的谦虚尝试:

import std.stdio;
import std.string;

void main() {

    writefln("---  Welcome to calculatro %s ---", " ");

    int exit = 0;

    do {


        string op;
        double first;
        double second;

        writeln("enter operator :");
        op = chomp(readln());
        writeln("operator :",op,":");
        //readf(" %s/n", &op);


        switch (op) {

        case "add", "+":
            writeln("enter two values :");
            //readf(" %s %s", &first, &second);
            readf(" %s", &first);
            readf(" %s", &second);
            writefln("%s+%s=%s", first, second, first+second);
            //writeln(first+second);   
            break;

        case "minus", "-", "substract":      
            writeln("enter …
Run Code Online (Sandbox Code Playgroud)

d

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

标签 统计

haskell ×3

console ×1

d ×1

gcc ×1

ghc ×1

iconv ×1

mingw ×1

windows ×1