Haskellは初めてです。
GHCiからファイルにコマンド結果を出力するのに非常に苦労しています。誰かが私にこれを行う方法について簡単な説明をしてくれるかどうか疑問に思いましたか?私がこれまでオンラインで見つけた例は複雑すぎるようです。
Haskellは初めてです。
GHCiからファイルにコマンド結果を出力するのに非常に苦労しています。誰かが私にこれを行う方法について簡単な説明をしてくれるかどうか疑問に思いましたか?私がこれまでオンラインで見つけた例は複雑すぎるようです。
あなたが関数を持っていて、あなたがしているmungeData
としましょう
ghci> mungeData [1..5]
[5,2,5,2,4,6,7,4,6,78,4,7,5,3,57,7,4,67,4,6,7,4,67,4]
これを次のようにファイルに書き込むことができます。
ghci> writeFile "myoutput.txt" (show (mungeData [1..5])
私は書きたいと思います
ghci> writeFile "myoutput.txt" $ show $ mungeData [1..5]
いくつかの括弧を取り除くために。
あなたはそれを使用して取り戻すことができます
ghci> fmap (read::String -> [Int]) $ readFile "myoutput.txt"
次のように、数値ごとに1行ずつ出力できます。
ghci> writeFile "myoutput'.txt" $ unlines.map show $ mungeData [1..5]
として読み返します
ghci> fmap (map read.lines::String -> [Int]) $ readFile "myoutput'.txt"
Redditに関するこの投稿では、GHCi出力を色付けする方法について説明しています(GHC> = 7.6)。プリティプリンターの代わりに、ロギング機能を指定することができます。たとえば、次を追加します.ghci.conf
。
:{
let logFile = "/home/david/.ghc/ghci.log"
maxLogLength = 1024 -- max length of a single write
logPrint x = appendFile logFile (take maxLogLength (show x) ++ "\n") >> print x
:}
:set -interactive-print=logPrint
これにより、GHCiの出力がに記録されghci.log
ます。
ロギングファイルはすでに存在している必要があります。存在しない場合appendFile
は文句を言います。手動で作成する必要があります。
ステートメントに収まる必要がありlet
ます。そうでない場合、GHCiはそれを拒否します。:{ :}
GHCiでマルチラインサポートを追加するために使用します。
どうやら、を使用:l
すると、で行ったすべてのインポートが削除ghci.conf
されるため、プレリュード関数に制限されます。Redditの投稿には、どういうわけか再定義できると書かれていますが:l
、それについては何も知りません。(これを行う方法を知っている場合は、もちろん、ログファイルが存在しない場合は自動的に生成できます。)