Size: a a a

Scala User Group

2020 August 11

P

Python in Scala User Group
Подозреваю что он хочет функции, а не типы сравнивать. То есть у него _ + 3 и _ + 4 - это разные вещи. Не первый раз встречаю такое желание, иногда люди хотят кеширование, например, организовывать так. Делать Map с функциями и параметрами. Короткий ответ на это обычно - нет, нельзя так сделать в общем случае.

Какие-то хитрости могут быть возможны (типа сохранения текста или дерева через макросы и т.п.), но всё это жутко и страшно. Лучше решить проблему по-другому, в крайнем случае сделай свой ADT для свого языка, если уж так охота пострадать, и уже эти ADT сравнивать.
источник

EB

Eugene Bosiakov in Scala User Group
ну можно создать объект терм и определить для него законы
источник

GP

Grigory Pomadchin in Scala User Group
Python
Подозреваю что он хочет функции, а не типы сравнивать. То есть у него _ + 3 и _ + 4 - это разные вещи. Не первый раз встречаю такое желание, иногда люди хотят кеширование, например, организовывать так. Делать Map с функциями и параметрами. Короткий ответ на это обычно - нет, нельзя так сделать в общем случае.

Какие-то хитрости могут быть возможны (типа сохранения текста или дерева через макросы и т.п.), но всё это жутко и страшно. Лучше решить проблему по-другому, в крайнем случае сделай свой ADT для свого языка, если уж так охота пострадать, и уже эти ADT сравнивать.
ага в таком случае надо свой язык делать и в мапу какуюто кидать термы
источник

TI

Tolegen Izbassar in Scala User Group
Ну функции равны если для каждого значения из области определения одинаково значение. Но если нет редукций этого не узнать
источник

TI

Tolegen Izbassar in Scala User Group
Надо же вычислять выражение для выяснения такой эквивалентности
источник

P

Python in Scala User Group
Tolegen Izbassar
Надо же вычислять выражение для выяснения такой эквивалентности
Я бы не обобщал, для Unit => Unit очень даже можно без всяких вычислений про эквивалентность всё узнать :D
источник

EB

Eugene Bosiakov in Scala User Group
пример с гитхаба
источник

TI

Tolegen Izbassar in Scala User Group
Python
Я бы не обобщал, для Unit => Unit очень даже можно без всяких вычислений про эквивалентность всё узнать :D
Ну вот это равенство на типах. Внутри могут быть куча выражений, который до юнита редуцируются
источник

GP

Grigory Pomadchin in Scala User Group
Tolegen Izbassar
Ну вот это равенство на типах. Внутри могут быть куча выражений, который до юнита редуцируются
+
источник

GP

Grigory Pomadchin in Scala User Group
а как вообще альфа эквивалентность опредляется для выражений простой типизированной лямбды?
источник

GP

Grigory Pomadchin in Scala User Group
где-то определение есть?
источник

λ

λoλdog in Scala User Group
а можно же сравнить байткод
источник

λ

λoλdog in Scala User Group
но частенько идентичные функции будут иметь разный байткод
источник

EB

Eugene Bosiakov in Scala User Group
если там есть строковые литералы же не будет работать?
источник

λ

λoλdog in Scala User Group
а еще лямбды можно сериализовать
источник

TI

Tolegen Izbassar in Scala User Group
Где Олеги
источник

OO

Oleksandr Olgashko in Scala User Group
Python
Подозреваю что он хочет функции, а не типы сравнивать. То есть у него _ + 3 и _ + 4 - это разные вещи. Не первый раз встречаю такое желание, иногда люди хотят кеширование, например, организовывать так. Делать Map с функциями и параметрами. Короткий ответ на это обычно - нет, нельзя так сделать в общем случае.

Какие-то хитрости могут быть возможны (типа сохранения текста или дерева через макросы и т.п.), но всё это жутко и страшно. Лучше решить проблему по-другому, в крайнем случае сделай свой ADT для свого языка, если уж так охота пострадать, и уже эти ADT сравнивать.
где-то в кишках скаларефлекта я видел сравнивалку функций, через деревья
источник

TI

Tolegen Izbassar in Scala User Group
Eugene Bosiakov
пример с гитхаба
Ну тут получается равенство термов это равенство записанных expression с точностью до названия переменных.
источник

TI

Tolegen Izbassar in Scala User Group
В хаскеле выражения упрощаются до почти нормальной формы. Видимо без этого равенство тяжело доказывать. В скале нормальной формы вроде нет)
источник

P

Python in Scala User Group
Oleksandr Olgashko
где-то в кишках скаларефлекта я видел сравнивалку функций, через деревья
источник