Alexander
или поменяет правила разрешения конфликтов
Alexander
Обобщение - это только часть задач FT / Free
Alexander
я не вижу зачем для этого нужно обобщение
Oleg
Alexander
Борьба со сложностью ПО - еще одна часть задач.
Иной подход к имплементации (не интерфейсу) - третья
Oleg
И делать часть промежуточных действий Unwrapped
Alexander
твой интерфейс это твой модуль
Alexander
я не согласен с этим утверждением
Alexander
Вариантов создания функциональных интерфейсов довольно много на текущий момент. FT, Free, ReaderT паттерн
Alexander
т.к. какой бы способ дизайна ты не предложил он укладывается
Alexander
И еще есть ряд
Alexander
Alexander
вышепредложенные укладываются
Alexander
Оно, может, и укладывается, но это нифига не единственно возможная практика.
Alexander
возможно неукладывающиеся скрываются в "и другие"№
Alexander
Я ж говорю, покажи мне свои интерфейсы
Kirill
@graninas а чем http://hackage.haskell.org/package/concurrency-1.6.1.0/docs/Control-Monad-STM-Class.html не FT?
Kirill
при том, что тут вот как раз реальная есть задача и применение
Kirill
в рамках dejafu как минимум
Alexander
Alexander
это FT
Kirill
не использует
Alexander
смысл FT и Free в том, что интерпретатор можно менять
Alexander
они ничего не говорят про интепретатор и его реализацию
Kirill
дак тут и есть это
Kirill
хочешь нативный stm - есть на нём
Kirill
а в тестах - своя имплементация
Alexander
смысл FT и Free в том, что интерпретатор можно менять
Смысл совсем в другом. Что можно абстрагировать и убирать сложность. Эффективно разделять на интерфейс и имплементацию. Менять или не менять интерпретатор - дело десятое. У меня может быть только 1 потенциальный интерпретатор, но если мне нужно разделить мой код на интерфейс и имплементацию, я все равно буду это использовать
Kirill
http://hackage.haskell.org/package/dejafu-1.11.0.3/docs/Test-DejaFu-Conc-Internal-STM.html
Alexander
Alexander
Alexander
Alexander
в качестве отделения интерфейса от имплементации они FT и Free ничем не отличаются
Alexander
Я не говорил, что они сильно отличаются. Где?
Alexander
ещё и с логикой беда : (
Alexander
я не говорил, что ты говорил, что они *сильно* отличаются
Alexander
я говорил, что вопрос покажите мне это бесмысленнен
Alexander
особенно после предоставления class STM
Alexander
Вы в чем меня пытаетесь сейчас убедить?
Big Bux Chungus
отделение интерфейса от имплементации полезно тем, что облегчает мышление
Alexander
Alexander
Alexander
ну видимо это должно как-то относиться к дискуссии и подтверждать какое-то утверждение высказанное ранее
Alexander
или опровергать что-то
Big Bux Chungus
ты не прав
я про это. возможно не так понял
Alexander
утверждение о том, что Free отделяет интерфейс от имплементации не более, чем
module Foo
Alexander
и там и там есть граница абстракции
Alexander
и там и там имплементация отделена от реализации
Alexander
но что дает Free - возможность реализации различных интерпретаторов
Alexander
module Foo без функторов и сигнатур этого не дает
Alexander
Ну, в хаскельном сообществе, конечно, еще нужно работать над распространением знаний о подходах
Big Bux Chungus
module Foo не отделяет интерфейс от имплементации на мой взгляд. да, можно не экспортировать то, что не хочешь
Alexander
отделяет конечно
Alexander
в модуле может быть любая имплементация, и она тебе как пользователю модуля не важна
Alexander
и там и там имплементация отделена от реализации
Разница в том, что когда мы говорим про модули, работающие с чистыми данными, то их имплементация тоже будет чистой.
Когда мы говорим про Free/FT, имплементация может быть потенциально нечистой, а это значит, что может существовать некая служебная рантаймная информация, и эту информацию _нет никакого смысла_ показывать в интерфейсе языка
Alexander
это вроде как в 70е было известно
Big Bux Chungus
да, но когда я читаю код модуля
Алексей
Модули бекпековские или старорежимные?
Alexander
отделение - старорежимные
Alexander
разные имплементации - бекпек
Андрей
А что в хаскеле интерфесом считать? Полиморфный тип?
Alexander
интерфейс тут обобщенно - те типы и функции, с которыми ты можешь работать
Big Bux Chungus
я вижу интерфейс отдельно от реализации
Alexander
когда ты делаешь import Foo ты видишь интерфейс
Big Bux Chungus
нет, компилятор видит интерфейс
Big Bux Chungus
haddock показывает мне интерфейс
Big Bux Chungus
но если я на код смотрю я вижу и то, и другое в мешанину
Alexander
Alexander
в чем проблема?
Ты можешь легко привести опровергающий пример, как это сделать, раз тебе это известно.
Alexander
я почему выше спросил, я не понимаю твою проблему
Alexander
я не вижу пример чего ты хочешь увидеть
Alexander
то, что ты пишешь, не вызывает у меня понимания, какой либо проблемы
Алексей
Я тоже не понимаю