
Александр
10.10.2018
11:11:30

Alexander
10.10.2018
11:11:37
в качестве отделения интерфейса от имплементации они FT и Free ничем не отличаются

Александр
10.10.2018
11:11:54
Я не говорил, что они сильно отличаются. Где?

Google

Alexander
10.10.2018
11:12:24
ещё и с логикой беда : (
я не говорил, что ты говорил, что они *сильно* отличаются
я говорил, что вопрос покажите мне это бесмысленнен
особенно после предоставления class STM

Александр
10.10.2018
11:13:08
Вы в чем меня пытаетесь сейчас убедить?

alexknvl
10.10.2018
11:13:12
отделение интерфейса от имплементации полезно тем, что облегчает мышление

Alexander
10.10.2018
11:13:44

Александр
10.10.2018
11:14:04

Alexander
10.10.2018
11:15:09
ну видимо это должно как-то относиться к дискуссии и подтверждать какое-то утверждение высказанное ранее
или опровергать что-то

alexknvl
10.10.2018
11:15:39

Alexander
10.10.2018
11:16:17
утверждение о том, что Free отделяет интерфейс от имплементации не более, чем
module Foo
и там и там есть граница абстракции

Google

Alexander
10.10.2018
11:16:47
и там и там имплементация отделена от реализации
но что дает Free - возможность реализации различных интерпретаторов
module Foo без функторов и сигнатур этого не дает

Александр
10.10.2018
11:18:19
Ну, в хаскельном сообществе, конечно, еще нужно работать над распространением знаний о подходах

alexknvl
10.10.2018
11:19:40
module Foo не отделяет интерфейс от имплементации на мой взгляд. да, можно не экспортировать то, что не хочешь

Alexander
10.10.2018
11:19:48
отделяет конечно
в модуле может быть любая имплементация, и она тебе как пользователю модуля не важна

Александр
10.10.2018
11:20:12
и там и там имплементация отделена от реализации
Разница в том, что когда мы говорим про модули, работающие с чистыми данными, то их имплементация тоже будет чистой.
Когда мы говорим про Free/FT, имплементация может быть потенциально нечистой, а это значит, что может существовать некая служебная рантаймная информация, и эту информацию _нет никакого смысла_ показывать в интерфейсе языка

Alexander
10.10.2018
11:20:14
это вроде как в 70е было известно

alexknvl
10.10.2018
11:20:19
да, но когда я читаю код модуля

Pineapple
10.10.2018
11:20:19
Модули бекпековские или старорежимные?

Alexander
10.10.2018
11:20:29
отделение - старорежимные
разные имплементации - бекпек

A
10.10.2018
11:21:09
А что в хаскеле интерфесом считать? Полиморфный тип?

Alexander
10.10.2018
11:21:12
интерфейс тут обобщенно - те типы и функции, с которыми ты можешь работать

alexknvl
10.10.2018
11:21:36
я вижу интерфейс отдельно от реализации

Alexander
10.10.2018
11:21:59
когда ты делаешь import Foo ты видишь интерфейс

alexknvl
10.10.2018
11:22:11
нет, компилятор видит интерфейс

Александр
10.10.2018
11:22:12

Google

alexknvl
10.10.2018
11:22:19
haddock показывает мне интерфейс
но если я на код смотрю я вижу и то, и другое в мешанину

Alexander
10.10.2018
11:22:55

Александр
10.10.2018
11:23:01
в чем проблема?
Ты можешь легко привести опровергающий пример, как это сделать, раз тебе это известно.

Alexander
10.10.2018
11:24:10
я почему выше спросил, я не понимаю твою проблему
я не вижу пример чего ты хочешь увидеть
то, что ты пишешь, не вызывает у меня понимания, какой либо проблемы

Pineapple
10.10.2018
11:24:42
Я тоже не понимаю
О чём спор вообще?

Alexander
10.10.2018
11:25:16
я спросил какую проблему должно решать наличие Free/FT для реализации STM
причем предпложил несколько вариантов, для чего я вижу это может быть полезно
то, как я интерпретировал ответы мне я говорить не будут, т.к. что подумал кролик никто не узнал
сейчас спор идёт о том, дает ли Free магические свойства по разделению интерфейса от имплементации, если используется единственный интепретатор

Pineapple
10.10.2018
11:27:08
Нет, конечно

Александр
10.10.2018
11:27:11
Я не понимаю, почему не дает
Что здесь есть "магическость"?

Alexander
10.10.2018
11:27:46
"то, что я не могу объяснить, но оно должно быть"

Александр
10.10.2018
11:27:51
Как же так, если 2 интерпретатора и больше - такое свойство есть, а если 1 - нет?

Pineapple
10.10.2018
11:28:20
Я так думаю, что если _можно_ написать несколь реализаций интерфеса, то разделение есть

Google

Александр
10.10.2018
11:28:20

Alexander
10.10.2018
11:28:23
моё утверждение - Free дает возможность делать разные интерпретаторы, по сравнению,со, скажем, модулями
это его основное свойство

Александр
10.10.2018
11:28:57
Я и не отрицал этого свойства в такой формулировке

Alexander
10.10.2018
11:29:00
новое по сравнению с module
оно не дает большего отделения, если у тебя 1 интепретатор, то возникает вопрос, а зачем мне Free
и что я должен продемонтрировать если напишу на FT

Александр
10.10.2018
11:29:35

Alexander
10.10.2018
11:29:41
вот опять

Александр
10.10.2018
11:29:51
Зачем закрывают интерфейсом ровно 1 имплеметацию в обычных ООП-языках?
Даже зная, что никогда второй имплементации не понадобится
Правильно, чтобы уменьшать сложность путем разделения ответственностей

Pineapple
10.10.2018
11:30:25
Ну можно, например, скрыть реализацию, не покзывая её з модулдя
С тем же эффектом

Alexander
10.10.2018
11:30:52
3 варинта:
1. понадобится
2. для множественного наследованя
3. карго-культ
выбирай, тот что удобнее

Александр
10.10.2018
11:31:10

Alexander
10.10.2018
11:31:40
НЕТ!
просто использование класса иил модуля дает тот же эффект

Google

A64m
10.10.2018
11:31:53

Alexander
10.10.2018
11:32:12
причем даже не мл-евского модуля

Александр
10.10.2018
11:32:21

Alexander
10.10.2018
11:32:35

alexknvl
10.10.2018
11:32:41

Alexander
10.10.2018
11:32:41
класса в смысле class
картинка_с_соломенным_самолётом.jpg

Александр
10.10.2018
11:34:01

Alexander
10.10.2018
11:35:11
я устал, я мухожук

Александр
10.10.2018
11:35:28
Это типичная задача, которая решается ОО-интерфейсами. И не потому, что "так принято в архитектурках", а потому что клиенту, где мой интерфейс используется, не полагается знать о рантайм-данных, которые я под него подсунул

Alexander
10.10.2018
11:35:29
если что-то новое и толковое будет - пните пожалуйста

Александр
10.10.2018
11:36:09
я устал, я мухожук
Ну вот можно что-нибудь из книжек про дизайн и архитектуру в ООП почитать

A64m
10.10.2018
11:36:36
там шизофазия

Alexander
10.10.2018
11:36:43

alexknvl
10.10.2018
11:36:43

A
10.10.2018
11:37:03

kana
10.10.2018
11:37:04

Александр
10.10.2018
11:37:05

kana
10.10.2018
11:37:23
если интерпретатор один, то вроде нет разницы

Alexander
10.10.2018
11:37:36
у FT и Free изоморфны
можно преобразовать одно в другое