Size: a a a

2021 October 23

JS

Jerzy Syrowiecki in Haskell Start
можно попробовать пару таких примеров

> head (1 : undefined)
1


чтобы быстрее привыкнуть
источник

[

[BRM]White Rabbit in Haskell Start
Ещё есть хорошая задачеа каны на ленивость, но, боюсь, там нужен уровень повыше
источник

VB

Vadym Biliuk in Haskell Start
Можно попросить поделиться? На досуге попробую решить, сдамся и уйду в жс обратно
источник

[

[BRM]White Rabbit in Haskell Start
Надо написать функцию, которая на вход принимает список и отдаёт список той же длинны, все элементы которого - минимальный элемент исходного. Алгоритм должен быть O(n)
источник

VB

Vadym Biliuk in Haskell Start
А, в чатике выше не обсуждалось это разве ранее?
источник

VB

Vadym Biliuk in Haskell Start
Точнее решение
источник

[

[BRM]White Rabbit in Haskell Start
Пару месяцев назад
источник

[

[BRM]White Rabbit in Haskell Start
Если не дальше
источник

VB

Vadym Biliuk in Haskell Start
Минимальный элемент исходного это типо при входе [1,2,3] я получу [1,1,1]?
источник

[

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

AP

Aleksei (astynax) Pi... in Haskell Start
Ждать до конца и искать минимум, заодно считая длину, потом сделать replicate?
источник

VB

Vadym Biliuk in Haskell Start
Спасибо, а для идиотов есть способ определить что я решил именно в O(n) а не в другом варианте?
источник

[

[BRM]White Rabbit in Haskell Start
И при [2, 1, 3] будет [1, 1, 1]
источник

VB

Vadym Biliuk in Haskell Start
Да, это очевидно, спасибо, попробую
источник

[

[BRM]White Rabbit in Haskell Start
Ну, в решении каны там явно виден один проход
источник

[

[BRM]White Rabbit in Haskell Start
Нет, такое решение лучше (быстрее по перформансу и проще), но там на ленивость, а не генераторы с гвардед рекурсией
источник

v

vsvsad in Haskell Start
Привет, объясните приницп пожалуйста.
Пишу я на ноде планировщик задачь, ипользую fp-ts, которая слизана с haskell.
И вот есть алгоритм
1) Задача попадает в очередь (массив) и порождает event 'taskAdded'
2) По массиву идет какой-то handler, берет из него функцию, выполнет и посылает event 'ready'
3) Берется новая задача из массива

Все event и прочие вещи обернуты в монаду IO и тут вроде все кононично, а вот как избежать мутации массива, который хранит очередь я не понимаю.

В хаскеле до таких вещей я еще не дошел, так что объясните принцип, пожалуйста
источник

AP

Aleksei (astynax) Pi... in Haskell Start
Если массив — иммутабельная структура в мутабельной переменной (IORef), то достаточно не передавать этот IORef туда, где не планируется писать. Если массив мутабельный, то он всё равно меняется в IO, скорее всего. А значит нужно вместо массива передавать функцию чтения из него (но не записи)
источник

AP

Aleksei (astynax) Pi... in Haskell Start
Как избежать модификации массива во время его обхода? Скопировать в иммутабельную структуру (сделать "снапшот")
источник

AP

Aleksei (astynax) Pi... in Haskell Start
Обычно поэтому и выбирают вариант "иммутабельная структура в мутабельной переменной"
источник