Size: a a a

2021 June 28

a

adam in Haskell
на самом деле вы до него вряд ли додумаетесь потому что такие приколы с ленивостью нигде не описываются
источник

к

кана in Haskell
да я выше дал описание по сути
источник

a

adam in Haskell
и сами по себе не очень интуитивны
источник

к

кана in Haskell
минимальный пример из той же сути
источник

IO

I O in Haskell
Я бы переформулировал задачу как заменить все элементы на минимальный за один "цикл", и тогда это не подходит, тут их два
источник

к

кана in Haskell
с нуля-то может и нельзя догадаться, но вот это может дать намек
источник

к

кана in Haskell
Переслано от кана
fix (\(~(a, b)) -> (b + b, 10))

или вот разобраться как это работает, и какой будет результат, и записать это без fix
источник

[

[BRM]White Rabbit in Haskell
в общем прикол в том, что там что-то определяется само через себя, да?
источник

к

кана in Haskell
прикол в том, что в момент, когда мы получаем задумку на значение, не факт что она сможет вычислиться в значение сейчас, но она при этом все еще может вычислиться в значение позже
источник

к

кана in Haskell
такое сообщение из будущего
источник

a

adam in Haskell
не, это та тема которую нужно обьяснять а не наводить
источник

[

[BRM]White Rabbit in Haskell
ну, вот тут мы грубо говоря описываем, что такое (a, b)
источник

к

кана in Haskell
если думать императивно, то
мы тут кладем в первый элемент пары b + b, но в "первой итерации" b еще ни на какое реальное значение не ссылается, оно будет ссылаться на "второй итерации", потому что в первой мы положим в b десятку. То есть b мы получаем из будущего, мы туда положим значение после того как используем для установки первого элемента пары

ну это конечно все не так в реальности происходит
источник

к

кана in Haskell
в таких простых выражениях это все кажется очевидным, но когда мы прогоняем такое значение через функции, то теряемся, а суть-то такая же
источник

L

Lierdakil in Haskell
я немножко покрутил, можно и через fix. но конечно не сразу очевидно как.
источник

[

[BRM]White Rabbit in Haskell
я сделал, но на половину :D
test = [10..20] ++ [1..15]
*Main> task test
[1,1,1,1,1,1,1,1,1,1,1,1,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15]
источник

к

кана in Haskell
во

let (a, b) = (b + b, 10) in (a, b)

вот это может помочь наверное
источник

ДК

Дима Ковалев... in Haskell
Никак. Любой реализованный алгоритм всегда в итоге сводится к набору императивных команд и здесь нужно выполнить проход чтобы вычислить минимальный элемент, а затем еще один проход чтобы собрать список
источник

к

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

к

кана in Haskell
именно второго прохода не будет
источник