1

ターミナルから 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 ================== =======
が表示されます。

4

3 に答える 3

2

これは私によく起こります....原因はわかりませんが、(少なくとも私の場合)コマンドラインを使用するだけで問題を解決できることはわかっています。パッケージのあるディレクトリ (*.cabal ファイルのあるディレクトリ) に「cd」して、次のように入力します。

cabal configure
cabal build

これが完了すると、Leksah は正常に動作します。明らかにこれは Leksah のバグですが、回避するのは簡単です。

于 2014-01-10T17:57:20.107 に答える
1

問題は、「apt-get install leksah」が必要なすべてのパッケージをインストールするという私の素朴な仮定にありました。しかし、それは正しくありません。

leksah をインストールしたら、次のものが必要になります。

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

その後、jamshidh が述べたように、package->cofigure をクリックする必要があります。

次に、ブレーキを構築します(問題に投稿されたプログラムの場合、これはleksahの自動生成されたデフォルトです):

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"
于 2014-01-10T22:09:59.853 に答える
-1

デフォルトの hello world の問題は、次の行です。

putStrLn (hello "World")   

左の引用符が正しい場所にないというだけです。それをに変更します

putStrLn ("hello World")   

そしてそれはうまくいくはずです。

于 2014-03-05T06:08:00.317 に答える