Изучение основ Haskell IO Monads, я хотел бы создать дескриптор временного файла. Временный каталог FilePath находится в контексте IO, и мне нужно сопоставить функцию в этом контексте, чтобы присоединиться к пути с именем файла.Basic Haskell IO Monad FilePath join
Моя первая попытка состояла в использовании fmap, однако FilePath был объединен в обратном порядке. Возможно ли fmap без изменения порядка?
Моя вторая попытка работает, но она кажется слишком сложной. Любые предложения, как это можно улучшить?
Haskell - красивый.
import System.Directory(getTemporaryDirectory)
import System.FilePath.Posix(joinDrive)
-- fmap is simpler, but the join order was reversed
createTempFile :: FilePath -> IO FilePath
createTempFile filename = fmap (joinDrive filename) getTemporaryDirectory
-- instead, I do this, but it feels overly complicated
createTempFile' :: FilePath -> IO FilePath
createTempFile' filename = getTemporaryDirectory >>= ((\x y -> return (joinDrive y x)) filename)
флип именно то, что мне нужно! Я считаю, что секционирование joinDrive превращает его в оператора - или что-то в этом роде. – indi
@indi По существу, да. Вы не можете изменить свою фиксацию (насколько мне известно), но она позволяет вам использовать ее в нотации infix точно так же, как оператор, это очень удобный синтаксис. – bheklilr