Size: a a a

Compiler Development

2021 May 02

D

Danya in Compiler Development
источник

Т8

Т-34 85 in Compiler Development
switch expression тоже не нужен?
источник

EL

Evgeny Link in Compiler Development
Так это ещё не в продакшне?
источник

EL

Evgeny Link in Compiler Development
collatz (num, i)
   | num == 1  = i
   | even num  = collatz (num`div`2, i+1)
   | otherwise = collatz (3*num+1,   i+1)


Всё уже придумано в хаскеле. Нет, городят кейсы, свитчи...
источник

А⚙

Антон ⚙️ in Compiler Development
Именно expression — нужен. А вот как statement — не особо
источник

Т8

Т-34 85 in Compiler Development
да всё нужно, всему есть удобное применение
источник

EL

Evgeny Link in Compiler Development
// кроме питона
источник

Т8

Т-34 85 in Compiler Development
там динамическая типизация
источник

А⚙

Антон ⚙️ in Compiler Development
nextCollatz 1 = 1
nextCollatz x = if even x then
div x 2 else 3 * x + 1

collatz = (+1) . length . takeWhile (/= 1) . iterate nextCollatz
источник

А⚙

Антон ⚙️ in Compiler Development
И это ужасно
источник

EL

Evgeny Link in Compiler Development
Нечитаемо :)
источник

А⚙

Антон ⚙️ in Compiler Development
Да нормально. И, в отличие от вашего варианта, thunk не копится
источник

EL

Evgeny Link in Compiler Development
🤨 Там же хвостовая рекурсия, нет? Как это в дебаге посмотреть?
источник

DP

Dmitry Popov in Compiler Development
i+1 будет санки делать
источник

А⚙

Антон ⚙️ in Compiler Development
Да это ж видно, ты i + 1 передаёшь и инспектируешь только в одной клозе, так что thunk не форсится вплоть до финала рекурсии
источник

AT

Alexander Tchitchigi... in Compiler Development
Кому как. Дело привычки. 🤷‍♀
источник

DP

Dmitry Popov in Compiler Development
Ленивость хаскеля была ошибкой 😎
источник

А⚙

Антон ⚙️ in Compiler Development
Вот если с i сделать bang pattern, то будет лучше. Но всё ещё надо надеяться, что компилятор сумеет боксинг в тупле убрать
источник

А⚙

Антон ⚙️ in Compiler Development
И, кстати, в Rust я примерно так же написал бы
источник

AT

Alexander Tchitchigi... in Compiler Development
Нет. 😎
источник