@haskellru

Страница 1509 из 1551
Александр
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
да, но когда я читаю код модуля
а когда ты смотришь реализацию интепретатора Free структуры?

интерфейс тут обобщенно - те типы и функции, с которыми ты можешь работать

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
в модуле может быть любая имплементация, и она тебе как пользователю модуля не важна
Имея некий интерфейс в модуле, ты вынужден пользоваться им в тех модулях, которые имплементируют. Я же хочу, чтобы имплементация могла содержать дополнительную инфу в рантайме, элементы которой не должны появляться в интерфейсе модуля никак вообще. Тут только type class, Free или прочая интерпретация сейчас может помочь

Google
alexknvl
10.10.2018
11:22:19
haddock показывает мне интерфейс

но если я на код смотрю я вижу и то, и другое в мешанину

Александр
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
"то, что я не могу объяснить, но оно должно быть"
Я уже 10 раз объяснил про рантаймовую инфу, которая должна быть только в имплементации. Хочешь примеров, они у меня в ГитХабе

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

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
Ну можно, например, скрыть реализацию, не покзывая её з модулдя
Как мне в эту скрытую часть пропихнуть свои рантаймовые данные? Настройки какие-нибудь. Не через публичный интерфейс функций, само собой

выбирай, тот что удобнее
4) Уменьшение сложности не вариант по какой причине?

Alexander
10.10.2018
11:31:40
НЕТ!

просто использование класса иил модуля дает тот же эффект

Google
A64m
10.10.2018
11:31:53
Зачем закрывают интерфейсом ровно 1 имплеметацию в обычных ООП-языках?
1) так положено, потому что архитектурка 2) ретроспективно ничего не обобщишь, тайпклассов с модулями-то нету

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

Александр
10.10.2018
11:32:21
просто использование класса иил модуля дает тот же эффект
Класса типов - да Модуль - нет. Тогда должна быть функция а-ля runThisAllStuff :: SomeRuntime -> ModuleStuff -> IO Result

Alexander
10.10.2018
11:32:41
класса в смысле class

картинка_с_соломенным_самолётом.jpg

Александр
10.10.2018
11:34:01
это будут разные реализации т.к. они будут зависеть от рантайм значений
Пусть будут разные, мне все равно. Я хочу: 1. В интерфейсных функциях ничего не знать про эти рантайм данные 2. Иметь возможность передать эти данные 3. По-прежнему использовать интерфейсные функции, которые под капотом обращаются к рантаймным данным

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
A
10.10.2018
11:37:03
там шизофазия
Там сущности?

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

Alexander
10.10.2018
11:37:36
у FT и Free изоморфны

можно преобразовать одно в другое

Страница 1509 из 1551