Это очевидно неверный тип для getFiles, там должен быть не Map, а минумум IO (String → NineFile), а лучше всего (MonadIO (ArrowMonad a), Arrow a) => a String NineFile
Любое усложнение типизации делается для одной из двух задач, — либо отсеить лишнее говно, либо наоборот расширить говно, проходящее сквозь тип. Чем более точное множество подобрано, тем круче
Тебе бы языка сложнее жавы в руки не давать
А ЧО НЕ ТАК?
Впрочем с джавой я погорячился. Сложнее POSIX shell
Ты обесни, как там иначе сделать.
По-хорошему walk вообще должен быть недоступен для пользователя либы, аки в высокоуровневой части libixp
Я и не собираюсь делать его доступным для пользователя либы.
У меня
} | Directory {
getFiles :: IO (Map String NineFile), -- must include ..
…
Это очевидно неверный тип для getFiles, там должен быть не Map, а минумум IO (String → NineFile), а лучше всего (MonadIO (ArrowMonad a), Arrow a) => a String NineFile
Ты очевидно неправ, так как при вызове read и stat мне нужно из твоей чуши каким-то раком получить все файлы.
Во-первых не факт, во-вторых это не делает тип Map'ом.
А какой смысл в MonadIO и прочих стрелках, когда у меня все сообщения будут обрабатываться в отдельных тредах?
Окей, напиши, как из твоего говна получить все файлы.
А в целом ты прав, Map будет работать архихуёво для синтетических ФС. Надо сделать String → IO NineFile и IO [NineFile].
В таком случае тебе нужен class Shit s \\ s → String → NineFile \\ s → [String]
Ну да, так лучше
Любое усложнение типизации делается для одной из двух задач, — либо отсеить лишнее говно, либо наоборот расширить говно, проходящее сквозь тип. Чем более точное множество подобрано, тем круче
Это не ответ же.
Если ты тупой и не можешь найти в этом ответ, то я не виноват. Я полиморфный и не собираюсь за тебя подставлять переменные