Size: a a a

2020 February 29

λ

λоλторт in rust_offtopic
Т-34 85
не, надо смотреть детально, ни черта не понятно. Возможно, я бы понял, если бы подобное написали на D или на C#. Возможно, на JS. Тут настолько не клеится с моими знаниями, что просто как баран на новые ворота смотрю, вообще никаких идей
Раст хоть немного знаешь? Паттернматчинг?
источник

Т8

Т-34 85 in rust_offtopic
λоλторт
Раст хоть немного знаешь? Паттернматчинг?
только немного. switch
источник

B

Bogdan in rust_offtopic
λоλторт
или так возможно чуть понятнее будет

takeWhile _ []       = []
takeWhile p (x : xs) =
 if p x
   then x : takeWhile p xs
   else []
if p x?
р это функция?

Оно прямо в выводе типов это поймет, или надо повесить аннотацию типа?
источник

AZ

Alex Zhukovsky in rust_offtopic
Т-34 85
@Psilon @kremovtort спасибо, работает. Но как оно работает - нихрена не понятно. И вроде простой код, но догадаться, что примерно происходит, можно лишь по маякам-числам на эквивалентом сишном коде
import Data.Foldable

main =
 let is = iterate (\i -> i*(i+2)) 5
     xs = [x | i <- is, let x = i - 1, x < 300]
 in traverse_ print xs


так должно быть проще
источник

λ

λоλторт in rust_offtopic
Bogdan
if p x?
р это функция?

Оно прямо в выводе типов это поймет, или надо повесить аннотацию типа?
тут вывод типа для p тривиален по меркам хинди миллера
источник

AZ

Alex Zhukovsky in rust_offtopic
Bogdan
if p x?
р это функция?

Оно прямо в выводе типов это поймет, или надо повесить аннотацию типа?
источник

λ

λоλторт in rust_offtopic
Alex Zhukovsky
import Data.Foldable

main =
 let is = iterate (\i -> i*(i+2)) 5
     xs = [x | i <- is, let x = i - 1, x < 300]
 in traverse_ print xs


так должно быть проще
Про iterate я как-то забыл. Ну и next я бы всё же не записывал как лямбду.
источник

AZ

Alex Zhukovsky in rust_offtopic
λоλторт
Про iterate я как-то забыл. Ну и next я бы всё же не записывал как лямбду.
а я про него не знал, но при гуглеже анфолда он бысро всплыл
источник

AZ

Alex Zhukovsky in rust_offtopic
простите, анаморфизм :D
источник

Т8

Т-34 85 in rust_offtopic
Alex Zhukovsky
import Data.Foldable

main =
 let is = iterate (\i -> i*(i+2)) 5
     xs = [x | i <- is, let x = i - 1, x < 300]
 in traverse_ print xs


так должно быть проще
чуть понятнее, но не менее непривычно. И, как я понимаю, тут уже чисто цикл?
источник

AZ

Alex Zhukovsky in rust_offtopic
Т-34 85
чуть понятнее, но не менее непривычно. И, как я понимаю, тут уже чисто цикл?
тут нигде нет циклов, тут есть функции, которые иногда выглядят похоже на императивный код. Например if это функция. Она всегда возвращает значение. Ну и так далее
источник

B

Bogdan in rust_offtopic
приконо!
источник

λ

λоλторт in rust_offtopic
Т-34 85
чуть понятнее, но не менее непривычно. И, как я понимаю, тут уже чисто цикл?
тут всё ещё нет цикла
iterate f x =  x : iterate f (f x)

как Алекс выше сказал — в хаскеле циклов нет
источник

λ

λоλторт in rust_offtopic
лист компрехеншены это вообще сахар для дунотации, которая сахар для монад
источник

Т8

Т-34 85 in rust_offtopic
Alex Zhukovsky
тут нигде нет циклов, тут есть функции, которые иногда выглядят похоже на императивный код. Например if это функция. Она всегда возвращает значение. Ну и так далее
очень непривычно. Может, посмотреть на императивные языки, там statements меняют на  expression. Что-то похожее получается
источник

Т8

Т-34 85 in rust_offtopic
λоλторт
лист компрехеншены это вообще сахар для дунотации, которая сахар для монад
ваще ни о чём не говорит... Короче, я ваще не в теме и оно какое-то совсем чужеродное
источник

Т8

Т-34 85 in rust_offtopic
Переслано от Т-34 85
студия ебанулась, похоже. Зачем она предлагает обычный switch поменять на это вырвиглазное нечто? Я уже даже не спрашиваю, кто и зачем это придумал
источник

λ

λоλторт in rust_offtopic
Т-34 85
очень непривычно. Может, посмотреть на императивные языки, там statements меняют на  expression. Что-то похожее получается
ну вот в хаскеле statement'ов вообще нет
источник

λ

λоλторт in rust_offtopic
в хаскеле всё есть выражение
источник

AZ

Alex Zhukovsky in rust_offtopic
Т-34 85
Переслано от Т-34 85
студия ебанулась, похоже. Зачем она предлагает обычный switch поменять на это вырвиглазное нечто? Я уже даже не спрашиваю, кто и зачем это придумал
потому что так короче и проще
источник