2014-01-10 1 views
1

Я установил Leksah 0.12.1.3 на Xubuntu 13.10 с терминала.Leksah default hello world не работает после установки Xubuntu 13.10

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 ================
.

+0

У вас есть расширение «CPP»? Кроме того, гораздо проще настроить свои тесты в вашем .cabal файле вместо использования языковых прагм. Есть гораздо лучшие способы сделать это. По крайней мере, попробуйте определить 'main = exeMain' напрямую. Кроме того, если он не компилируется с GHC, он не будет компилироваться с leksah. Удостоверьтесь, что это не проблема с кодом, прежде чем приступать к проблеме с редактором. – bheklilr

ответ

2

Это случается со мной много .... Я не знаю, в чем причина, но (по крайней мере, в моем случае) Я знаю, что могу исправить проблему, просто используя командную строку. Я просто «CD» в каталог с пакетом (одна с * .cabal файл) и введите

cabal configure 
cabal build 

после того, как это сделано, Leksah работает должным образом. Очевидно, что это ошибка Лекса, но ее легко обойти.

1

Проблема была в моем наивном предположении, что «apt-get install leksah» установит все необходимые пакеты. Однако это неверно.

После установки leksah вам нужно:

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

После этого, как уже упоминалось jamshidh, вам нужно нажать пакет-> 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" 
-1

Проблема с по умолчанию hello world - следующая строка:

putStrLn (hello "World") 

Это просто, что левое quo т. е. не в правильном месте. Измените это на

putStrLn ("hello World") 

и он должен работать.

+0

Это не проблема здесь, прочитайте источник снова. – IARI

 Смежные вопросы

  • Нет связанных вопросов^_^