Нет ничего, что обеспечивало бы унифицированный интерфейс файлового esque на основе URL, хотя технически вы могли бы взломать его с помощью поддержки GHC для определения пользовательских типов Handle
s (как используется в knob ).
Но вы можете согласованно обрабатывать потоковые данные из различных источников с помощью пакетов в итеративном стиле, таких как pipeline и enumerator . Например, существуют интерфейсы каналов для файлов , HTTP (IMO лучший HTTP-интерфейс для Haskell, даже если каналы не используются напрямую), FTP , сетевые сокеты и т. д. ИМО, они лучше подходят для обработки данных из нескольких источников, чем решение для ввода-вывода файлов в стиле Handle
; такие вещи, как поиск, не имеют смысла в контексте последовательного сетевого потока.
Конечно, это не решает проблему обеспечения согласованного пользовательского интерфейса для всех этих; потребуется дополнительная работа. Простейшим путем, вероятно, является обработка URI
с из стандартного сетевого пакета, сопоставление их с Source
с (или эквивалентным образом) соответствующим образом. Для таких вещей, как файлы и HTTP, это должно быть так же просто, как обработка протокола и передача оставшейся части URI в виде строки в соответствующую библиотеку.
В итоге: нет, но все необходимые элементы для обработки локальных и удаленных данных в едином порядке, как это, присутствуют, и часть пользовательского интерфейса не должна быть слишком трудной для написания, если вам это нужно.