Хорошо, предположим, что у меня есть операция IO
; loadFile :: FilePath -> ByteString
который я обрабатываю с processData :: ByteString -> ProcessedData
быть эту операцию довольно expesnive, и я хочу, чтобы использовать эти обработанные данные в двух действиях, как так:Цепочные действия, разделяющие данные в блоке do
main = do
{
bytes <- loadFile "....";
let data = processData bytes
in printf (extractFoo data address1)
printf (extractFoo data address2) -- Compiler error
}
Я знаю, что могу это сделать, который в принципе не разделяя data
между двумя действиями:
main = do
{
bytes <- loadFile "....";
let data = processData bytes
in printf (extractFoo data address1);
let data = processData bytes
in printf (extractFoo data address2);
}
Как делить data
как в printf
? Я очень новичок в Haskell, и я борюсь с монашей IO. Я пытаюсь понять это, но его медленный процесс до сих пор.
Запустите новый блок 'do' после' in'. – Jubobs
@Jubobs duh ... (facepalm) Спасибо! – InBetween