安装Xubuntu 13.10后,Leksah默认的hello world无法正常工作

时间:2014-01-10 13:28:47

标签: haskell leksah

我已从终端在Xubuntu 13.10上安装了Leksah 0.12.1.3。

sudo apt-get install leksah

打开leksah,创建了新的工作区和包。 Main.hs默认使用“Hello world”程序创建。

module Main (
    main
) where

import Control.Monad (unless)
import Data.List (stripPrefix)
import System.Exit (exitFailure)
import Test.QuickCheck.All (quickCheckAll)

-- Simple function to create a hello message.
hello s = "Hello " ++ s

-- Tell QuickCheck that if you strip "Hello " from the start of
-- hello s you will be left with s (for any s).
prop_hello s = stripPrefix "Hello " (hello s) == Just s

-- Hello World
exeMain = do
    putStrLn (hello "World")   

-- Entry point for unit tests.
testMain = do
    allPass <- $quickCheckAll -- Run QuickCheck on all prop_ functions
    unless allPass exitFailure

-- This is a clunky, but portable, way to use the same Main module file
-- for both an application and for unit tests.
-- MAIN_FUNCTION is preprocessor macro set to exeMain or testMain.
-- That way we can use the same file for both an application and for tests.
#ifndef MAIN_FUNCTION
#define MAIN_FUNCTION exeMain
#endif
main = MAIN_FUNCTION

现在,如果我尝试在右下窗口中运行包或在编辑器中编写任何内容 ========== 127 ==========================
出现。

3 个答案:

答案 0 :(得分:2)

这件事发生在我身上......我不知道原因是什么,但(至少在我的情况下)我知道我可以通过使用命令行解决问题。我只是“cd”进入包含目录的目录(带有* .cabal文件的目录),然后输入

cabal configure
cabal build

完成此操作后,Leksah正常工作。显然它是一个Leksah错误,但它很容易解决。

答案 1 :(得分:1)

问题出在我天真的假设中,'apt-get install leksah'将安装所有需要的软件包。 但是,这不正确。

安装leksah后,您需要:

apt-get install cabal-install
apt-get install ghc
cabal update

之后,正如jamshidh所说,你需要点击package-&gt; cofigure。

现在建立制动器(对于发布的程序,这是leksah autogenerated default):

Couldn't match type `IO' with `[]'
Expected type: String
  Actual type: IO ()
In the first argument of `putStrLn', namely `testMain'
In the expression: putStrLn testMain
In an equation for `main': main = putStrLn testMain

但我设法建立了更简单的版本:

module Main (
  main
) where
main = putStrLn "Hello World"

答案 2 :(得分:-1)

默认问候语世界的问题是以下行:

putStrLn (hello "World")   

只是左引号不在正确的位置。将其更改为

putStrLn ("hello World")   

它应该有用。