2017-08-12 10 views
0

私はHaskellのノブで、次のようにする方法がわかりません。
GHCiを使用して、私の主な機能では、 。これの主な目的は、メインが完了した後も内容を分析できるようにすることです。しかし、バインドを使用しているmotionFile以外の他の定数は表示されません。GHCi:メインの外からアサインメントを表示する方法

main = do 
    motionFile <- readFile "transitions.mot" 
    let mP = toListListDbl $ toListListStr $ dropXFromStrA 4 (lines motionFile) 
    let mPT = transpose $ mP 
    let mA = actuatorCurves nJ mPT 
    putStrLn mA 

はメインが完了した後、私は他の機能のための入力であることを利用できるmPmPT、およびmAのそれぞれを持っていると思います。

これを行う方法はありますか?

+1

'main'が完了した後、プログラムは終了します。 – chepner

+0

はい、しかし、motionFileへのバインディングが残っているので、私はそれをパラメータとして使用して他の関数を呼び出すことができます。私はそれが私が持っている他の定数のために可能にしようとしています。 – gone

+0

インタラクティブな通訳からやっていますか?それ以外の場合は、 'main'が完了した後で他の関数を使っているとは言いません。関数を呼び出すことができるその時点で実行中のプログラムはありません。 – chepner

答えて

2

他の機能に追加の引数として渡します。

+0

ハスケルに新しいことを教えてください。どういう意味ですか? – gone

1

ただ、私は非常に

main :: IO() 
main = do ... 

のような型宣言を提供するために、あなたをお勧めしますあなたの主な機能の外に出すの割り当てを移動するので、

mP file = toListListDbl $ toListListStr $ dropXFromStrA 4 (lines file) 
mPT = transpose $ mP 
mA = actuatorCurves nJ mPT 

main = do 
    motionFile <- readFile "transitions.mot" 
    putStrLn $ mA motionFile 

のようにトップレベルで別々の機能としてそれらを定義し、 2-3文字の略語の代わりに適切な関数名を使用してください。

+0

これは現在動作しません。なぜなら、 'mP'はリストではなく関数なので、' mPT'の定義は型チェックしません。 – 4castle

+0

@ 4castleはmPT = transposeでなければなりません。右か? – madnight

+0

はい、 'mPT'をどのように使用しているかのために' mA'に同様の変更が行われます。 – 4castle

関連する問題