ファイルからデータを取得して解析し、別の関数に引数として渡そうとしています。
data LogLine = LogLine {
name :: String
, args1 :: String
, args2 :: String
, constant :: String
} deriving (Ord, Show, Eq)
main = do
file <- readFile "foo"
let result = (parse final "Input" file) --Parses the file into the LogLine datatype
let firstargs = getFirstArgs result --Get the first argument out of the datatype
let secondargs = getSecondArgs result --Get the second argument out of the datatype
let constant = getConstant result --Get the constant out of the datatype
createGraph firstargs secondargs constant --THIS IS THE PROBLEM
問題は、ファイルを読み込もうとするたびに (IO String) になり、何をするにしても常に IO を運ぶ必要があることです。createGraph
関数は次のように宣言されます
createGraph :: String -> String -> String -> Argument
しかし、最後のステートメントを実行しようとするたびに、次のように文句を言います。
Couldn't match expected type `IO a0' with actual type `Argument'
In the return type of a call of `createGraph'
関数の戻り値の型を変更することは許可されていませんcreateGraph
。これは、引数を渡す必要がある大きなフレームワークの一部であるためです。これに対処する方法は何ですか?