В продолжение темы интерфейсов.
В принципе, Haskell позволяет достаточно легко написать интерфейс для множества различных реализаций стека -- с помощью тайп-классов. Но, что уж греха таить, даже тайп-классы приводят к путанице в отношениях между реализацией и интерфейсами; и у них есть тёмная сторона.
С одной стороны, компилятор автоматически выбирает нужную функцию в зависимости от того, как будет использоваться результат, а с другой, для каждого типа может быть только одна такая функция. Если вы хотите иметь два разных способа, например, сериализации некоторой сущности, то извините! Ну или пишите по-хипстерски Serialize1 и Serialize2 :)
Post #756
919
- 👍 1
- 🤔 1