
kana
25.06.2018
19:00:10
да в State например

Александр
25.06.2018
19:00:11
Тут нужен код

kana
25.06.2018
19:02:06
так значение + методы есть объект

Google

Denis
25.06.2018
19:02:55
комонада объект
коалгебры объект
коиндукция моделирует объекты

Александр
25.06.2018
19:03:04
Ну все, я умываю руки, вы пытаетесь аргументровать про ООП, привлекая концепции, которые имеют такое же название, но не являются концепциями из ооп

kana
25.06.2018
19:04:22
стой
смотри
у нас есть значение некоторое

Александр
25.06.2018
19:04:32
Я ушел

kana
25.06.2018
19:05:41
ну ладно.
в любом случае, я вижу некоторое значение, которое уже по сути есть состояние. Есть методы для работы с этим значением, которые могут вернуть новое значение (обновляют состояние)
работать со значением БЕЗ методов мы не можем, оно спрятано
class Shape s where
double :: s -> s
area :: s -> Float
data Rect = Rect { width :: Float, height :: Float }
instance Shape Rect where
double (Rect w h) = Rect (w * 2) (h * 2) -- x4 lol
area (Rect w h) = w * h
f :: Shape s => s -> IO ()
f shape = do
let shape' = double shape
print $ area shape'
main :: IO ()
main = f (Rect 10 20)

Kirill
25.06.2018
19:07:41

Александр
25.06.2018
19:09:20
Если он раньше это делал, ну окей
Сделаем вид, что сегодня луна неправильно светит и разойдемся.

Google

kana
25.06.2018
19:14:18
я кстати понял, что по сути в hinteractive реализован динамически типизированный язык

Александр
25.06.2018
19:25:56
я кстати понял, что по сути в hinteractive реализован динамически типизированный язык
В некотором смысле да. Но все-таки, там не динамический язык, а два слоя: типизированный и безтиповый. На типизированном уровне я могу получить доступ к объектам любого сериализуемого типа (причем, если нужно, я сделаю это типо-безопасно, с помощью того же подхода, который в stm_free применил), а на безтиповом уровне я храню все состояние игры в JSON и потому могу его оперативно складывать в файл, если нужно.

A64m
25.06.2018
19:34:02
ну вот тут FT прямо сравнивается и с ооп и с типичным функциональным подходом, когда функция-"интерпретатор" ПМ-ом интерпретирует "язык"-АлгТД https://oleksandrmanzyuk.wordpress.com/2014/06/18/from-object-algebras-to-finally-tagless-interpreters-2/

Александр
25.06.2018
19:34:14
В некотором смысле да. Но все-таки, там не динамический язык, а два слоя: типизированный и безтиповый. На типизированном уровне я могу получить доступ к объектам любого сериализуемого типа (причем, если нужно, я сделаю это типо-безопасно, с помощью того же подхода, который в stm_free применил), а на безтиповом уровне я храню все состояние игры в JSON и потому могу его оперативно складывать в файл, если нужно.
И, на самом деле, требование сериализуемости - необязательное. Просто в контексте именно игрового движка оно естественное, а вот в stm_free по подсказке местных гуру я заменил сериализуемость на Any, там это оправдано.

A64m
25.06.2018
19:34:18
так что это не ооп, очевидно

Александр
25.06.2018
19:36:10
Спасибо, почитаю

Imants
25.06.2018
20:00:32

Алексей Ayaye :)
25.06.2018
20:20:53
я читал книжки, потом пошел курс на степике. курс хорош тем, что заставляет делать руками. обратную связь дает. а книжку прочитал - непонятно, понял или нет )

Слава
25.06.2018
20:21:43

Leonid
25.06.2018
20:23:46
OOP это IORef

Andrei
26.06.2018
06:12:30

Alex
26.06.2018
07:26:12
Джентельмены, помогите: у меня есть строки вида
табы слово запятая новаялиния
Скажите пожалуйста, как это распарсить с помощью парсека и получить список слов

Mikhail
26.06.2018
07:27:32
Разделить по запятой, убрать табы?

Alex
26.06.2018
07:27:35
Листаю доку, но не могу понять как добавить слово

Mikhail
26.06.2018
07:27:52
Зачем там парсек

Alex
26.06.2018
07:28:17
Это только подзадача

Alexander
26.06.2018
07:31:23
тут нужно ответить "что такое слово"
например если что угодно, где нету пробела то слово это word = takeWhile (not . isSpace)

kir
26.06.2018
07:32:52
Лучше break

Google

Dmitry
26.06.2018
07:32:56

Alex
26.06.2018
07:33:27

Dmitry
26.06.2018
07:33:29
что приведет нас к полноценному парсингу строковых литералов и как следствие к полноценнум парсеру csv, которых уже есть пара штук

Alexander
26.06.2018
07:33:30
тогда разбор будет:
word `sepBy1` tab <* comma <* endOfLine
вот я тоже боюсь что там tsv или csv

Dmitry
26.06.2018
07:34:01
это всегда так
без исключений.

Alex
26.06.2018
07:34:34
Да, оно похоже, но на самом деле там C++ енум

Dmitry
26.06.2018
07:34:45
парсер строковых литералов я таскаю из проекта в проект, периодически теряю и пишу заново

Alexander
26.06.2018
07:34:52
в общем я комбинаторы в документации каждый раз смотрю, но в целом структура будет как в коде выше

Dmitry
26.06.2018
07:35:33
может, на хакадже есть?

Alex
26.06.2018
07:35:59
А что значит <* ?

Dmitry
26.06.2018
07:37:02

Alex
26.06.2018
07:37:27
Спасибо

Dmitry
26.06.2018
07:37:31

Ilya
26.06.2018
07:37:31

Alexander
26.06.2018
07:37:41
из сообщения выше

Ilya
26.06.2018
07:38:19

Alexander
26.06.2018
07:38:20
это к автору вопрос на самом деле, что такое слово
парсек, у него есть эти комбинатоы

Google

Ilya
26.06.2018
07:38:47
тогда уж надо many letter или как там

Alexander
26.06.2018
07:38:50
ну атоопарсек
не знаю, many неПробел - вполне разумно
а что там надо, нам не сказали

Ilya
26.06.2018
07:40:12
я к тому, что не похоже, что это скомпилируется:) но может ошибаюсь
например если что угодно, где нету пробела то слово это word = takeWhile (not . isSpace)

Admin
ERROR: S client not available

Ilya
26.06.2018
07:40:20
тогда разбор будет:
word `sepBy1` tab <* comma <* endOfLine

Alexander
26.06.2018
07:41:15
я же написал, что +- имена комбинаторов

Ilya
26.06.2018
07:41:22
ок понял
значит это не тот word

Alexander
26.06.2018
07:41:38
что я их помнить что-ли буду, если хаддок есть
это не из data.list

Ilya
26.06.2018
07:45:14
парсер C++ пишешь?

Alex
26.06.2018
07:45:44
Да, мне нужно транслировать много старого кода в новый

Ilya
26.06.2018
07:46:30
и какая добрая душа тебе посоветовала для этого Parsec? ?

Alex
26.06.2018
07:46:46
Первое что нагуглил
А есть либы проще?

Aleksey
26.06.2018
07:47:19
Тут можно вообще обойтись "без либ"

Google

Aleksey
26.06.2018
07:47:27
words + отбросить запятые

Alexander
26.06.2018
07:47:37
megaparsec / attoparsec
тут можно и без либ, если задача полная

Alex
26.06.2018
07:48:09

Ilya
26.06.2018
07:48:27
да готовое что-нибудь надо брать
сейчас бы руками C++ код парсить

Слава
26.06.2018
07:49:20
Парсил с++, случайно написал компилятор

Yuriy
26.06.2018
08:16:48
так ведь распарсить С++ без половины компилятора невозможно

IC
26.06.2018
08:19:41
можно поофтопить? когда там следующий FProg SPb?

Maxim
26.06.2018
08:20:03
вроде как в июне не будет, а в июле будет на ITGM
я там спрашивал

Alex
26.06.2018
08:28:09
Нашел гайд по мегапарсеку
http://akashagrawal.me/beginners-guide-to-megaparsec/
Я так понимаю, он уже устарел?
Ибо у меня вообще не компилится
Код оттуда
Ой
Не то