
Мерлин
29.08.2017
15:18:34

Denis
29.08.2017
15:20:37

kana
29.08.2017
15:21:00
благодарю

Denis
29.08.2017
15:21:18
Начало в SICP
просто я вывел Fix на типах тогда показавши что список можно записать по другому

Google

Denis
29.08.2017
15:22:52
@kana_sama ладно побуду в твоем канале пока)

kir
29.08.2017
16:02:48
Есть у кого интресных ресурсов по аппликативным языкам (статей, например) - т.е., по Forth, Joy, Factor?

Denis
29.08.2017
16:06:24
https://soundcloud.com/lambda-cast

kir
29.08.2017
16:07:27
Joy-то как раз аппликативный. На комбинаторах - unlambda :)

Denis
29.08.2017
16:09:13
в вики видел такое https://wiki.haskell.org/Applicative_data-driven_programming

kir
29.08.2017
16:11:04
Благодарю.

Denis
29.08.2017
16:16:56
было что-то у меня в загашниках по joy надо искать

Abbath
29.08.2017
16:29:12
@xgrommx ATTaPL есть

Denis
29.08.2017
16:29:23
где?)

Abbath
29.08.2017
16:30:32
https://www.cis.upenn.edu/~bcpierce/attapl/

Vyacheslav
29.08.2017
16:31:13

Denis
29.08.2017
16:31:14
а где книга?)

Google

Abbath
29.08.2017
16:32:06
Книга на либгене

Denis
29.08.2017
16:33:11
интересно а переводов нет) как тапл

kir
29.08.2017
18:25:25
http://www.hawaga.org.uk/ben/tech/london-hug-acme-smuggler/presentation.html

Denis
29.08.2017
19:48:41
у кого-то есть книга Марлоу на русском?

Vasiliy
29.08.2017
20:12:26
у меня есть, в бумажном виде

Denis
29.08.2017
20:14:53
эх)) отсканируй)

Alexander
29.08.2017
20:15:40
а зачем на русском?

Denis
29.08.2017
20:16:10
надо)

Kit
29.08.2017
20:55:37
правда она уже расклеелась, могу дать

Denis
29.08.2017
21:04:43
как?) я же с Украины

Kit
29.08.2017
21:05:54
эм, ну тогда не могу

Denis
29.08.2017
21:06:58
разве что прислать...

Aleksey
30.08.2017
06:30:23
https://www.litres.ru/saymon-marlou/parallelnoe-i-konkurentnoe-programmirovanie-na-yazyke-haskell-22873018/
420р за отличную книгу - не так много, я считаю

Dmitry
30.08.2017
06:32:08
++
лучшая книга по хаскеллу же.
точно не много.

Aleksey
30.08.2017
06:36:58
Заодно и издательству денег перепадёт. "ДМК Пресс" стоит поддержать - переводят хорошие книги и продают по разумным ценам

Google

Andrew
30.08.2017
06:37:49


Ilya
30.08.2017
07:39:27
Написал небольшой модуль, обобщающий понятие индекса списка (массива). Кроме индексирования с начала (Int) теперь можно указывать в любую точку списка (массива), например в конец или в середину. Новый индекс является инстансом Num, поэтому поддерживает арифметику и неявный каст с инта (fromInteger) => старый код не сломается, если пользоваться моими индексами.
Переопределены функции (!!), take, drop, splitAt из Data.List
λ> let x = [1..7]
λ> x !! 0
1
λ> x !! end
7
λ> x !! (end-3)
4
λ> x !! mid
4
λ> let x = "Hello World!"
λ> splitAt end x
("Hello World","!")
λ> splitAt (mid+1) x
("Hello W","orld!")
λ> splitAt (mid-1) x
("Hello"," World!")
Это кому-нибудь интересно? Где стоит это выложить? Могу рассказать немного по-подробнее и показать код, его немного.
Синтаксис
x !! end
подобен матлабу или джулии, но вместо end можно взять любое другое слово или знак, т.к. это просто синоним
короче такой вот сахарок на уровне типов, а не на уровне макросов


Donat
30.08.2017
07:47:41
Мне интересно, выкладывай

Ilya
30.08.2017
07:48:33
ща, зарегаюсь на гитхабе тогда только, чтобы не файл кидать

Alexander
30.08.2017
07:52:05
x Vector.! (fromIntegral end) что мне скажет?
error или не скомпилируйтс я?

Serghei
30.08.2017
07:53:39
?

Ilya
30.08.2017
07:53:46
какой тип у Vector.! ?
я пока переопределил функции только в Data.List, потом собираюсь переопределить для IArray и MArray
откуда нужно Vector.! импортировать?

Alexander
30.08.2017
07:55:18
Vector a -> Int -> a
в общем что будет если я fromInteger на end натравлю
(просто интересно)

melancholiac
30.08.2017
07:57:57
нормально что выражения вроде
(\x y z -> [x,y,z]) <$> (+3) <*> (*2) <*> (/2)
только понимаются при помощи ручки и бумажки? это пройдет со временем?

Ilya
30.08.2017
07:58:16
выражение
fromInteger end
не имеет смысла, вообще говоря
т.е. туда не "зашита" длина какого-то конкретного списка

Alexander
30.08.2017
07:58:53
fromIntegral конечно же

Google

Ilya
30.08.2017
07:59:11
да тоже самое
Index нельзя сделать инстансом Integral, т.к. нельзя корректно определить функцию toInteger
потому что это расширение целых чисел, если так можно выразиться
т.е. добавляются новые элементы, не сводимые к целым числам, но могущие участвовать в индексировании массивов (списков)

Alexander
30.08.2017
08:00:19

melancholiac
30.08.2017
08:00:55
то есть так делать не хорошо?

Alexander
30.08.2017
08:00:58
@Masteroid ок, я неправильно твоё сообщение выше распарсил
ну именно твой пример выглядит сложнее чем должен

Ilya
30.08.2017
08:01:39

Alexander
30.08.2017
08:01:45
вообще пользоваться <$> и <*> нормально
а блин, я хотел @SINCERELY ответить

melancholiac
30.08.2017
08:03:28
а 3+ нет ;_;
практика вылечит?

Vasiliy
30.08.2017
08:07:21
по-моему, норм читается

Alexander
30.08.2017
08:08:36
мне кажется что разницы в колве агрументы нет
слодности в чтении возникают если там всякие join вокруг и то 1 раз

Ilya
30.08.2017
08:09:01
Мне интересно, выкладывай
https://github.com/Toucandy/Index/blob/master/Index.hs
в общем вот код, можно поиграться
нужно просто сохранить файл и натравить ghci
ghci Index.hs
пока только списки, массивы и пр. будут потом

Alexander
30.08.2017
08:10:29
не надо с такой структурой индекса переопределять для векторов операции :)

Google

Ilya
30.08.2017
08:11:27
ну там нужно не [a] -> i, а t a -> i
я думаю

Alexander
30.08.2017
08:11:41
угу

Ilya
30.08.2017
08:11:42
где t будет списком или чем угодно
это в планах:)

melancholiac
30.08.2017
08:12:05
можно считать что <$> это просто композиция, а <*> композиция "такая что следующая композиция будет произведена не с аргументом текущей композиции, а со следующим"?

Alexander
30.08.2017
08:12:14
или I (forall t . HasLength t => t -> Int)

melancholiac
30.08.2017
08:12:17
Prelude> :t (\x y z -> [x,y,z]) <$> (+3) <$> (*2) <$> (/2)
(\x y z -> [x,y,z]) <$> (+3) <$> (*2) <$> (/2)
:: Fractional a => a -> a -> a -> [a]
Prelude> :t (\x y z -> [x,y,z]) <$> (+3) <*> (*2) <*> (/2)
(\x y z -> [x,y,z]) <$> (+3) <*> (*2) <*> (/2)
:: Fractional t => t -> [t]
вроде такого
если я правильно понял последовательные <$> производят композицию только относительно первого элемента

Ilya
30.08.2017
08:13:16

Alexander
30.08.2017
08:14:24
что лучше это или явно вытащить тип структуры в типовой агрумент Index я не знаю
ещё меня печалит, что придется переопределять много функций из разных библиотек
и что с этим делать и возможно ли я не знаю
@int_index signatures и все эти модули могут помочь это решить?
вроде нет, без переписывания всего и вся?

Ilya
30.08.2017
08:24:10

Alexander
30.08.2017
08:24:23
TH если только

Ilya
30.08.2017
08:25:16
с TemplateHaskell я пока не знаком:) посмотрю

Vasiliy
30.08.2017
08:27:32
Prelude> :t (\x y z -> [x,y,z]) <$> (+3) <$> (*2) <$> (/2)
(\x y z -> [x,y,z]) <$> (+3) <$> (*2) <$> (/2)
:: Fractional a => a -> a -> a -> [a]
Prelude> :t (\x y z -> [x,y,z]) <$> (+3) <*> (*2) <*> (/2)
(\x y z -> [x,y,z]) <$> (+3) <*> (*2) <*> (/2)
:: Fractional t => t -> [t]
вроде такого
может, так проще будет?
λ> :t do x <- (+3); y <- (*2); z <- (/2); pure [x, y, z]
do x <- (+3); y <- (*2); z <- (/2); pure [x, y, z]
:: Fractional t => t -> [t]