2014-01-25 1 views
1

Я установил:Fay: не удалось разрешить квалифицированные имена ffi?

  • совмещаемых-0.19.0.1
  • совмещаемых база-0,19

И я пытаюсь скомпилировать

-- test.hs 
module Main where 

import FFI 

main = ffi "alert('hello world');" 

с

fay test.hs 

И получать

fay: unable to resolve qualified names ffi 

Обратите внимание, что я в состоянии собрать вещи с Fay-JQuery, Fay-текста и т.д. Полный исходные файлы, компилировать и запускать (с Fay базы) и делать то, что я ожидаю, что они делают при их исполнении. Но как только я попытаюсь использовать ffi в любом из них, я получаю эту ошибку.

fay-jquery, fay-dom и другие пакеты, которые используют ffi, как будто ведут себя хорошо, когда я их импортирую.

Я не уверен, что еще нужно упомянуть? Я нахожусь на ghc 7.6.3, запустив Ubuntu.

Помощь будет оценена :)

ответ

3

Импорта Прелюдии и добавить сигнатуру к чему-либо с помощью FFI.

module Console (main) where 

import Prelude 
import FFI 

main :: Fay() 
main = putStrLn (showInt (fib 10)) 

fib :: Int -> Int 
fib 0 = 0 
fib 1 = 1 
fib n = fib (n - 1) + fib (n - 2) 

showInt :: Int -> String 
showInt = ffi "%1+''" 

Компиляция.

Комментарий import Prelude возвращает ошибку: src/console.hs:7:8: Not in scope: putStrLn' среди прочих.

Комментирование showInt :: Int -> String возвращает ошибку: fay: your FFI declaration needs a type signature: showInt = ffi "%1+''"

Закрепить эти вопросы и дать ему еще один шанс.

Я сказал нашим славным руководителям Совета Фей, что import Prelude больше не требуется, если у вас есть подходящие штампы в трудовом паспорте.

+0

Начиная с fay 0.19 вам не нужно явно импортировать Prelude. –

+0

А, похоже, моя проблема заключалась в том, что у ffi не была подпись типа. Я проверю его на свой настоящий код и подтвержу. –