Size: a a a

2020 November 20

MK

Maxim Koltsov in Haskell
Из хорошего классического фильма
источник

AV

Alexander Vershilov in Haskell
Maxim Koltsov
Ты там схемы рекурсии пилил?)
я не такой умный
источник

AV

Alexander Vershilov in Haskell
Просто привёл к канонической форме и обратно
источник

AV

Alexander Vershilov in Haskell
типа simplify = fromQ . toQ
источник

DB

Danil Berestov in Haskell
>:(
источник

MK

Maxim Koltsov in Haskell
Normalization by evaluation?
источник

MK

Maxim Koltsov in Haskell
Смотри какие умные слова я в аспирантуре выучил!
источник

AV

Alexander Vershilov in Haskell
опять какие-то умные слова
источник

AV

Alexander Vershilov in Haskell
источник

DB

Danil Berestov in Haskell
Прикона
источник

DB

Danil Berestov in Haskell
А такой вопрос:
Mul (Mul (Const 5) (Var "a")) (Const 6)
должно свернуться в
Mul (Const 30) (Var "a")
?
источник

к

кана in Haskell
да все просто вообще
источник

DB

Danil Berestov in Haskell
Ну не подсказывай(
источник

к

кана in Haskell
simplify expr =
 Uniplate.rewrite expr \case
   Add (Const a) (Const b) -> Const (a + b)
   Mult (Const a) (Const b) -> Const (a * b)
   Mult (Const 1) b -> b
   Mult (Const 0) _ -> Const 0
   Mult a (Const 1) -> a
   Mult _ (Const 0) -> Const 0
   Add (Const 0) b -> b
   Add a (Const 0) -> a
   other -> other

задача решена
источник

к

кана in Haskell
а это ниче не даст
источник

к

кана in Haskell
либы же нельзя использовать
источник

DB

Danil Berestov in Haskell
я так понимаю надо подвигать константы вправо масимально.
источник

DB

Danil Berestov in Haskell
И дальше просто всё
источник

DB

Danil Berestov in Haskell
кана
simplify expr =
 Uniplate.rewrite expr \case
   Add (Const a) (Const b) -> Const (a + b)
   Mult (Const a) (Const b) -> Const (a * b)
   Mult (Const 1) b -> b
   Mult (Const 0) _ -> Const 0
   Mult a (Const 1) -> a
   Mult _ (Const 0) -> Const 0
   Add (Const 0) b -> b
   Add a (Const 0) -> a
   other -> other

задача решена
рерайт походу этим и занимается
источник

к

кана in Haskell
не, рерайт просто применяет функцию столько раз, пока она что-то делает
источник