2013-08-24 99 views
1

我有一個Fay文件,這是我的程序的核心,但是我需要一些幫助我的邏輯,例如一個方法來取代子字符串。據我所知,如果我需要直接從Hackage提供的許多Haskell庫的方法,我不能使用這些Haskell庫,但我必須將代碼複製粘貼到我的項目中。所以這就是我所做的,我在我的項目中的一個新文件中複製了一個「替換」函數和MissingH庫中的其他助手:Utils.hs。Fay:包含另一個Fay文件?

Utils.hs編譯沒有問題與費伊。此外,我將它導入到我的主要Fay文件中,併爲主項目文件獲取一個JS文件,沒有任何問題。然而,在運行時,我得到以下錯誤:

ReferenceError: Utils$$36$ is not defined 

我不認爲菲將包括來自於我的主要JS文件輔助文件中的代碼,所以我包括在加載HTML兩個JS文件。而爲了讓更加確信,當我加載主文件,該utils的文件被加載,我加載像:

$.getScript("Utils.js", function(){ 
    $.getScript("FayConfig.js"); 
}); 

但儘管如此我仍然得到錯誤。我試着用「--library」編譯Utils.hs,但它沒有幫助。

所以我的問題是,我需要實現哪種設置,生成的JS會找到我放在另一個HS文件中的幫助函數,知道在編譯時,Fay(顯然)發現它們沒有問題?網上有這樣的設置的例子嗎?大部分Fay使用我發現的所有代碼都在單個HS文件中,儘管他們經常使用來自cabal的外部Fay代碼,就像fay-jquery一樣。在我的情況下,爲這些簡單的助手建立一個cabal項目將是矯枉過正的。

回答

0

你正在使用哪個版本的Fay(fay --version)?看起來好像您使用的版本早於 0.16,其中忘記import Prelude不會給出任何警告,請參閱this closed ticket。因此升級fay和/或添加import Prelude

我們還在考慮在生成的輸出中重命名操作符,以使這些錯誤消息更易於理解。

您不需要多次調用fay,就可以將所有依賴項輸出到同一個js文件中。所以在這方面使用cabal包沒有什麼不同。

希望這會有所幫助,否則請給我一個方法來重現這一點。

+0

我在0.16之前使用了一個小小的git checkout。我應該更新到hackage或git上的最新版本嗎?一旦我更新並重新測試,我會在這裏更新信息。很高興知道它在一個文件中。 –

+0

0.16是在hackage上,所以無論你喜歡什麼! –

+0

是的,你是對的。只需升級fay並添加導入前綴到新的Fay模塊我包括修復了這個問題:-) –

相關問題