@haskellru

Страница 192 из 1551
? animufag ?
18.02.2017
21:18:38
а да

Ilya
18.02.2017
21:20:11
Prelude> let f = (.) (.) (.) (...) :: (t1 -> t) -> (t2 -> t3 -> t1) -> t2 -> t3 -> t Prelude> let f = (^2) ... (+) Prelude> f 3 4 49

у кого нет под рукой интерпретатора

? animufag ?
18.02.2017
21:22:07
(b -> c) -> (a -> a1 -> b) -> a -> a1 -> c ок понятно ну давайте тогда челендж: сконструировать на точках функцию с типом (b -> b1 -> c) -> (a -> b) -> a -> b1 -> c у самого пока нет догадок

Google
Ilya
18.02.2017
21:28:40
просто (.) ?

Kit
18.02.2017
21:29:26
у (.) 2 входных переменных

а тут 4

Ilya
18.02.2017
21:29:46
(.) :: (b -> c) -> (a -> b) -> a -> c где c = (b1 -> c)

а тут 4
и всё же я настаиваю:)

Kit
18.02.2017
21:30:28
(.) :: (b -> c) -> (a -> b) -> a -> c где c = (b1 -> c)
даже если, то переменных будет 3

Ilya
18.02.2017
21:31:25
я не очень понимаю, о чём ты говоришь

? animufag ?
18.02.2017
21:31:27
лол

Kit
18.02.2017
21:32:31
я не очень понимаю, о чём ты говоришь
самое простое что можно делать при проверке сигнатур, это смотреть на количество точек входа в функцию

? animufag ?
18.02.2017
21:32:40
у (.) 2 входных переменных

(.) :: (b -> c) -> (a -> b) -> a -> c где c = (b1 -> c)

Kit
18.02.2017
21:33:19
у (.) 2 входных переменных
согласен лажанул

? animufag ?
18.02.2017
21:34:32
@newrlan как бы (.) сама по себе возвращает функцию. а тут мы ей передаём функцию... ну ты понял. тащемта я сам так норм лажанул с челенджом. хотя по-своему иронично

Google
Ilya
18.02.2017
21:36:18
для тех, у кого нет интерпретатора

op1 f g x y = f (g x) y op2 = (.)

*Main> :t op1 op1 :: (t1 -> t2 -> t) -> (t3 -> t1) -> t3 -> t2 -> t *Main> :t op2 op2 :: (b -> c) -> (a -> b) -> a -> c

*Main> op1 (+) (^2) 4 5 21 *Main> op1 (+) (^2) 4 5 21

ч.т.д.

Igor
18.02.2017
21:37:16
что там с идрисом? об эффектах уже рассказали?

? animufag ?
18.02.2017
21:43:45


но вообще я искал по истории идрис. так и не понял про какие конференции речь. мб про ту что сейчас в спб, по выходным. ещё увидел упоминание f* вообще андеграунд тема. deep web для фп

Igor
18.02.2017
21:46:20
да, речь про курс в CSclub

он уже завтра заканчивается

? animufag ?
18.02.2017
21:47:11
ого

а ну да. 4 дня всего. не понятно зачем репозиторий закрытый

Kit
18.02.2017
21:59:20
а вот такой вопрос

($) (.) = (.)

кто-нибудь размышлял?

или это не так

? animufag ?
18.02.2017
22:02:40
думаю (любая функция $) = этаже функция

Ilya
18.02.2017
22:02:49
+

по сути это можно считать определением $ в безточечной нотации

Google
Ilya
18.02.2017
22:03:33
или даже так ($) = id

Kit
18.02.2017
22:04:19
или даже так ($) = id
сигнатуры не совпадают

Ilya
18.02.2017
22:04:37
началось

? animufag ?
18.02.2017
22:05:58
ну если здесь знак равенства считать тем знаком равенства который пишем при определении сущности

Kit
18.02.2017
22:06:07
id шире чем ($)

Ilya
18.02.2017
22:07:25
и что?

op :: (a -> b) -> a -> b op = id

*Main> op (^2) 4 16

? animufag ?
18.02.2017
22:09:26
(тут я не знаю как это выразить словами... нельзя же сказать слово переменная. и константа тоже не очень) ($) = id ок id = ($) не ок в терминах хаскельного =

? animufag ?
18.02.2017
22:14:22
ну это я про слово сущность. в общем казус этого диалога в том что @newrlan понимал = как равенство из логики (кто знаком с логикой мб подскажет крутое слово), ну чтобы тип в обе стороны подсталялся

Ilya
18.02.2017
22:14:45
а надо понимать в смысле хаскелловского клауза

мы же изначально говорили именно о них

($) (.) = (.)

думаю (любая функция $) = этаже функция

? animufag ?
18.02.2017
22:17:57
($) (.) = (.)
на тот момент он мог иметь ввиду не хаскельный клауз. а некое абсолютное равенство по типу и семантике. при том что у $ есть некая своя хитрость при компиляции, но в данном случае она не должна сработать

Kit
18.02.2017
22:18:38
у функции $ на сколько я помню есть приоритет

и у функции (.) тоже приоритет

Google
Ilya
18.02.2017
22:19:00
0, да

Kit
18.02.2017
22:19:39
равенство имелось в виду абсолютное, да

функция (.) должна по приоритету выполниться раньше функции ($)

для меня это вопрос, что там получится

по мотивации, я вас понимаю

и по результату вопроса нет

мне интересно как это в кишках там сработает

Ilya
18.02.2017
22:27:20
а прагма RULES это не из этой области?

? animufag ?
18.02.2017
22:27:35
что это

Ilya
18.02.2017
22:28:41
оптимизирующие выражения

например map f (map g x) = map (f . g) x

можно сказать компилятору, чтобы он заменял все вхождения такие

прагмой RULES

? animufag ?
18.02.2017
22:29:47
да погуглил. и что-то я не хочу такое знать)

Ilya
18.02.2017
22:30:07
то, что слева, на то, что справа

Kit
18.02.2017
22:34:33
все оказалось проще, действительно приоритет играешь важную роль

(.)($) имеет совершенно другую сигнатуру

Ilya
18.02.2017
22:35:21
а можно пример того, о чём речь шла

т.е. какие два выражения не равны?

чтобы можно было прям вбить в ghci

Google
Quet
18.02.2017
22:36:08
мне кажется или вы каким-то фп-онанизмом тут занимаетесь? )

Ilya
18.02.2017
22:36:47
зато не монаду теребим, как тут недавно проскакивало ?

Quet
18.02.2017
22:37:06
даже не знаю что хуже... )

melancholiac
18.02.2017
22:37:28
удачно я сюда заглянул

мне кажется или вы каким-то фп-онанизмом тут занимаетесь? )

зато не монаду теребим, как тут недавно проскакивало ?

Ilya
18.02.2017
22:37:41
ну лично мне, как начинающему, такой "фп-онанизм" гораздо интереснее нюансов установки cabal в докер

которые тут на мой взгляд довольно часто обсуждаются:)

Kit
18.02.2017
22:37:59
λ h = ($) (.) λ :t h h :: (b -> c) -> (a -> b) -> a -> c λ h (+3) (^3) 1 4

λ b = (.) ($) λ :t b b :: (a1 -> a -> b) -> a1 -> a -> b λ b (+3) (^3) 1 <interactive>:45:1: error: • Non type-variable argument in the constraint: Num (b -> b) (Use FlexibleContexts to permit this) • When checking the inferred type it :: forall b. (Num (b -> b), Num b) => b

? animufag ?
18.02.2017
22:41:25
($) (.) = (.)

(.)($) имеет совершенно другую сигнатуру

Kit
18.02.2017
22:43:34
зато не монаду теребим, как тут недавно проскакивало ?
почему бы и не монады, хорошая конструкция

Ilya
18.02.2017
22:44:51
вот бы еще вывод типа функции b понять
b = (.) ($) b f = (.) ($) f = ($) . f b f x = ($) (f x) = (f x $) b f x y = f x y

Kit
18.02.2017
22:45:44
да, клево!

без явной аннотации типа тоже катит:)
Без явной нотации типа не катит, поскольку op становится шире ($), я о том, что op 1 определено, а ($) 1 неопределенно.

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