标签: haskell-platform

打印状态值进行调试

为了调试目的,我们如何打印当前状态值?例如,在http://www.haskell.org/haskellwiki/State_Monad的 concrete-example-1的代码中 ,如何在读取每个输入字符后打印当前状态值?

module StateGame where

import Control.Monad.State

type GameValue = Int
type GameState = (Bool, Int)

playGame :: String -> State GameState GameValue
playGame []     = do
    (_, score) <- get
    return score

playGame (x:xs) = do
    (on, score) <- get
    case x of
       'a' | on -> put (on, score + 1)
       'b' | on -> put (on, score - 1)
       'c'      -> put (not on, score)
       _        -> put (on, score)
    playGame xs

startState = (False, …
Run Code Online (Sandbox Code Playgroud)

haskell haskell-platform

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

haskell示例通常不起作用

我是haskell的初学者,并使用最新的GHCi 2011.2.0.1.我经常遇到的一个挫折是,互联网和书籍中的例子(甚至来自官方的haskell.org网站,例如http://www.haskell.org/haskellwiki/State_Monad的示例-2 )都不会编译.它需要几轮狩猎和发布问题才能找出问题所在.甚至RWH书中的一些例子都不起作用.

这是新版本的haskell还是haskell-platform的问题?语言/平台是否正在开发且不稳定,或者只是示例已过时?无论哪种方式,新学生找到正确的例子来学习的最佳方法是什么?

更具体地说,您可以帮助修复上面提到的状态monad示例吗?

haskell haskell-platform

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

我需要一种方法来运行Haskell代码而无需在Mac上进行任何安装

我喜欢在Haskell开发,但目前面临挑战.在我的教育地点,我对我的帐户没有管理权限.我想在那里调试/测试.我需要一种方法来运行Haskell代码而无需安装haskell-platform或者ghci需要管理级别的权限.例如,一个将运行haskell代码的网站(abeit仅限于不包括文件访问权限)或java实用程序(或独立.app,但由于"家长控制"的性质,java是首选),或其他我没有想到.Ruby或Python中的源代码或编译的Java,Flash和源代码优先于本机代码.这是在Mac OS X 10.6上,供参考.

macos haskell non-admin osx-snow-leopard haskell-platform

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

在Emacs中启动时将选项传递给ghci

因此,如果我想在ghci中运行线程应用程序,我只需-threaded在启动时传递给ghci.但是从Emacs内部启动时我该怎么做?我可以为此自定义Emacs haskell模式吗?

我想是的,但我找不到任何指示?我找不到emacs lisp的任何参考文档.只有Haskell维基但没有参考.虽然我正在学习,但我对(Emacs)lisp并不是很熟悉.

我想如果我能找到安装haskell-platform的默认emacs软件包的位置,我可以通过源读取来试图找出它.

emacs haskell haskell-platform

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

无限精度整数:除以2

在C中,如果我想将int除以2,则x%2应该运行得快,(x%10)% 2 因为好的编译器只会查看最后一位.但是在具有无限精度算术的语言中呢?

特别是在Haskell中会更快(或者它们是相同的速度):even x或者even (quot x 10)

compiler-construction haskell haskell-platform integer-arithmetic

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

在Haskell Platform 2013.2.0.0上在Mac OS X上安装Stylish-haskell时出错

当我尝试从hackage安装Stylish-haskell软件包时,我会相对一致地得到相同的错误.安装顺利进行,直到它安装导管,这不能正确安装.

错误消息的结尾:

        17 warnings and 2 errors generated.
        Failed to install conduit-1.0.8
        cabal: Error: some packages failed to install:
        conduit-1.0.8 failed during the building phase. The exception was:
        ExitFailure 1
        stylish-haskell-0.5.8.0 depends on conduit-1.0.8 which failed to install. 
        yaml-0.8.5.1 depends on conduit-1.0.8 which failed to install.
Run Code Online (Sandbox Code Playgroud)

我得到的完整终端输出是:

        Configuring conduit-1.0.8...

        /var/folders/cn/67wph78d62qc1v_lm7z2mb980000gn/T/32054.c:1:12:
             warning: control reaches end of non-void function [-Wreturn-type]
        int foo() {}
                   ^
        1 warning generated.
        Building conduit-1.0.8...
        Preprocessing library conduit-1.0.8...

        Data/Conduit/Binary.hs:165:14:
             warning: missing terminating ' character [-Winvalid-pp-token]
                    let c' = …
Run Code Online (Sandbox Code Playgroud)

macos haskell haskell-platform

4
推荐指数
2
解决办法
1771
查看次数

使haskell平台更新需要哪些步骤?

我刚安装了haskell-platform我的系统(Ubunto 12.04,如果重要的话).我发现cabal仍然是版本1.14.0.0,这导致了问题.我也有一些regex-base当前但是针对古老版本的MTL库编译的软件包(即).解决依赖关系的问题.

有人可以帮助我完成所需的步骤,以使haskell平台的所有部分都是最新的.

haskell cabal haskell-platform

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

不在范围内:readMaybe,我应该导入哪个库?

我正在尝试使用readMaybe函数,它应该在Text.Read库中,但是当我编译时,我会收到以下消息:

 Module `Text.Read' does not export `readMaybe'
Run Code Online (Sandbox Code Playgroud)

任何人都可以说我做错了什么?谢谢 ;)

haskell functional-programming haskell-platform maybe

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

Haskell中的并发:如果单线程但设置+ RTS -N会怎样

正如GHC文档所说,设置+RTS -N将使用多个线程来运行程序.如果我的程序是一个简单的单线程程序(即不par,不是forkIO),如下所示怎么办?

m = 10^6

wr 0 = return ()
wr i = do  
        appendFile "/tmp/data.nothing" $ show(i)++"\n"
        wr (i-1)

main = do
    wr m
    putStrLn "done"
Run Code Online (Sandbox Code Playgroud)

但是,当我使用-Ds(调度调度程序)标志运行程序时,我得到了以下日志

all threads:
threads on capability 0:
threads on capability 1:
    thread    7 @ 0x7fd5b0199000 is not blocked (TSO_DIRTY)
    thread 1944 @ 0x7fd592dc6390 is not blocked (TSO_DIRTY)
    thread 1945 @ 0x7fd592def8a8 is not blocked
    thread 1946 @ 0x7fd592dc6790 is not blocked
    thread 1947 @ 0x7fd592e0f790 …
Run Code Online (Sandbox Code Playgroud)

haskell ghc haskell-platform

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

如何检查Haskell中一种代数类型列表中的所有元素?

如果我有以下代数数据类型

type MyVal = Either String Int
Run Code Online (Sandbox Code Playgroud)

并具有包含MyVal类型的元素的列表

ls = [Right 1, Right 2, Right 3]
xs = [Right 1, Left "error", Right 3]
Run Code Online (Sandbox Code Playgroud)

现在,我想写函数找出那是我所有具有“ Right”值的列表,然后它应该返回True,否则返回False。

在这种情况下,ls它将返回True,xs并且将返回False。

我怎样才能做到这一点?

我尝试使用all函数,但无法正确使用它。

haskell functional-programming haskell-platform

4
推荐指数
2
解决办法
375
查看次数