Size: a a a

2021 March 07

к

кана in Haskell
[BRM]White Rabbit
Кстати, мне вот для этого сейчас надо гадать, как ты думал, как я реализовал гпсч, да?🌚
а я не реализовывал, я думал ты туда подставишь свое определение
источник

[

[BRM]White Rabbit in Haskell
тип Int -> (Int, Int) это, конечно, информативно, но не для моего скудного умишки
источник

к

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

к

кана in Haskell
[BRM]White Rabbit
тип Int -> (Int, Int) это, конечно, информативно, но не для моего скудного умишки
type Gen = Int

makeNewGen :: Gen -> Gen
makeNewGen gen = твоя сложная функция

makeIntFromGen :: Gen -> Int
makeIntFromGen gen = gen

random' :: Gen -> (Int, Gen)
random' gen = (makeIntFromGen gen, makeNewGen gen)
источник

[

[BRM]White Rabbit in Haskell
как вообще можно придумать гпсч, который генерирует не лист, а тульпу?..
источник

к

кана in Haskell
random' :: Gen -> (Int, Gen)
random' gen = (gen, gen + 1)

вот простой пример, тут правда случайные совсем не случайные, но я не знаю каких-то хороших функций
источник

к

кана in Haskell
со списком будет не сложнее

randoms :: Int -> [Int] -- твоя функция

type Random = State [Int]

randomInt :: Random Int
randomInt = State (\(x : xs) -> (x, xs))

runRandom :: Int -> Random a -> a
runRandom seed r = evalState r (randoms seed)

evalState :: State s a -> s -> a
evalState m s = let (x, _) = runState m s in x

тут мы от стейта отковыриваем голову и возвращаем ее, а хвост отдаем дальше в стейт
источник

[

[BRM]White Rabbit in Haskell
ну... как минимум компилятор не ругается
источник

[

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

к

кана in Haskell
я не понял формулировку
источник

[

[BRM]White Rabbit in Haskell
блин, забей тогда
источник

к

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

то есть то что ты назвал обещанием, является просто функция, которая да, обещает что-то вернуть, когда ее вызовут (сделают runRandom)
источник

[

[BRM]White Rabbit in Haskell
ну я так и понял, да
источник

[

[BRM]White Rabbit in Haskell
в общем, мы не таскаем с собой лист, чтобы брать из него новые значений, а таскаем "заметки" в виде функций (ну или обещания, как я уже их назвал) вызвать когда-то в будущем runRandom, чтоб пройтись по листу разом и всё сгенерить
источник

к

кана in Haskell
ну типа
источник

[

[BRM]White Rabbit in Haskell
кстати
источник

[

[BRM]White Rabbit in Haskell
ты примерно минут 40 назад хотел пойти спать
источник

к

кана in Haskell
да...
источник

[

[BRM]White Rabbit in Haskell
ахахахаха
источник

[

[BRM]White Rabbit in Haskell
это мне хорошо, у меня -2 по мск
источник