Size: a a a

PureScript — русскоговорящее сообщество

2019 January 29

VK

Vladimir Klntsky in PureScript — русскоговорящее сообщество
Зигохистоморфный Препроморфизм
короче вот список что мне надо запаблишить
purescript-split (поговорил с автором оригинала на хаскель и он дал добро,  хочу обобщить и сделать тайпкласс Splittable)
purescript-align
purescript-chronicle (на основе него хочу сделать профункторный валидатор)
purescript-partial-semigroup
purescript-diff
> поговорил с автором оригинала на хаскель
split на hackage?
Если да, мне это тоже может понадобиться, т.к. balanced fold можно выразить и через splitEvery.
источник

ЗП

Зигохистоморфный Препроморфизм in PureScript — русскоговорящее сообщество
Vladimir Klntsky
> поговорил с автором оригинала на хаскель
split на hackage?
Если да, мне это тоже может понадобиться, т.к. balanced fold можно выразить и через splitEvery.
я даже доки кое-какие там сделал
источник

ЗП

Зигохистоморфный Препроморфизм in PureScript — русскоговорящее сообщество
Vladimir Klntsky
> поговорил с автором оригинала на хаскель
split на hackage?
Если да, мне это тоже может понадобиться, т.к. balanced fold можно выразить и через splitEvery.
да, он
источник

VK

Vladimir Klntsky in PureScript — русскоговорящее сообщество
Зигохистоморфный Препроморфизм
я даже доки кое-какие там сделал
Ага, читаю.
источник

ЗП

Зигохистоморфный Препроморфизм in PureScript — русскоговорящее сообщество
я с автором по почте переписывался
источник

ЗП

Зигохистоморфный Препроморфизм in PureScript — русскоговорящее сообщество
split довольно интересный пакет
источник

VK

Vladimir Klntsky in PureScript — русскоговорящее сообщество
Ожидал увидеть линзы/призмы в коде.

Что будет в Splittable?
источник

ЗП

Зигохистоморфный Препроморфизм in PureScript — русскоговорящее сообщество
Vladimir Klntsky
Ожидал увидеть линзы/призмы в коде.

Что будет в Splittable?
обобщение
источник

ЗП

Зигохистоморфный Препроморфизм in PureScript — русскоговорящее сообщество
чтобы не повторять код файлах
источник

ЗП

Зигохистоморфный Препроморфизм in PureScript — русскоговорящее сообщество
общие методы должны быть внесены в тайпкласс, что перечислены тут
https://github.com/xgrommx/purescript-split/blob/master/src/Data/Split/Array.purs#L194-L201
источник

ЗП

Зигохистоморфный Препроморфизм in PureScript — русскоговорящее сообщество
все остальное выводится уже через них
источник

ЗП

Зигохистоморфный Препроморфизм in PureScript — русскоговорящее сообщество
Vladimir Klntsky
Ожидал увидеть линзы/призмы в коде.

Что будет в Splittable?
про линзы/призмы,  можно позаменять cons/uncons через _Cons
источник

VK

Vladimir Klntsky in PureScript — русскоговорящее сообщество
Кстати, а нельзя ли всё в split выразить через Traversable или TraversableWithIndex? В качестве монады взять State или Writer, и в ней накапливать результат.
источник
2019 January 31

ЗП

Зигохистоморфный Препроморфизм in PureScript — русскоговорящее сообщество
@savage42 я тут подумал и можно сделать такой оператор
filteredBy cond lens = filtered (cond <<< view lens)
[{value: Just 1}, {value: Nothing}] ^.. traversed <<< filteredBy isJust _value
источник

VY

Vasiliy Yorkin in PureScript — русскоговорящее сообщество
удобно, спасибо
источник

ЗП

Зигохистоморфный Препроморфизм in PureScript — русскоговорящее сообщество
теперь можно компоузить линзы и глубоко засовывать кондишн
источник

ЗП

Зигохистоморфный Препроморфизм in PureScript — русскоговорящее сообщество
я тут подумал и можно вообще вот так сделать, это если надо хитро по линзе матчить и быть еще сейф
filteredByLens lens = L.filtered (\x -> isJust (x L.^? lens))
[{value: Just 1}, {value: Nothing}] ^.. traversed <<< filteredByLens (_value <<< _Just)


теперь это еще и безопасно
источник
2019 February 01

VK

Vladimir Klntsky in PureScript — русскоговорящее сообщество
Насчёт борьбы со .slice() в uncons есть одна идея. Так как массивы всегда иммутабельные, можно создать обёртку, которая указывает на диапазон индексов в Array, и использовать её так, как будто это настоящий Array.

type Start = Int
type End = Int
data FastArray a = Literally (Array a) | View Start End (Array a)

derive instance genericFastArray :: Generic (FastArray a) _
instance showFastArray :: Show a => Show (FastArray a) where
 show = genericShow

uncns :: forall a. FastArray a -> Maybe { head:: a, tail :: FastArray a }
uncns (Literally arr) =
 map (\head -> { head, tail: View 1 (length arr) arr}) (head arr)
uncns (View start end arr)
 | start < end =
   map (\head -> { head, tail: View (start + 1) end arr }) (arr !! start)
 | otherwise = Nothing

Возможно, что это уже сделано кем-то, не проверял.
источник
2019 February 03

VK

Vladimir Klntsky in PureScript — русскоговорящее сообщество
Немного упростил код выше, добавил бенчмарк и сделал репозиторий.
https://github.com/8084/purescript-array-views
Модуль повторяет API Data.Array.
источник
2019 February 06

KV

Kirill Valyavin in PureScript — русскоговорящее сообщество
источник