Size: a a a

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

2018 September 20

VY

Vasiliy Yorkin in PureScript — русскоговорящее сообщество
а как найти все? ну вот есть filtered там:
-- | Filters on a predicate.
filtered :: forall p a. Choice p => (a -> Boolean) -> Optic' p a a
filtered f =
 right >>>
   dimap
     (\x -> if f x then Right x else Left x)
     (either identity identity)
как им воспользоваться?
вероятно, мне нужен просто предикат с линзой и обычный Array.filter
источник

VY

Vasiliy Yorkin in PureScript — русскоговорящее сообщество
а для чего этот filtered нужен?
источник

ЗП

Зигохистоморфный Препроморфизм in PureScript — русскоговорящее сообщество
Vasiliy Yorkin
ну да, по семантике это больше подходит, наверное
я не уверен, но попробуй эту дичь
findFirstOf :: forall s t a b. Fold (Endo (->) (First a)) s t a b -> (a -> Boolean) -> s -> Maybe a
findFirstOf p f = unwrap <<< foldrOf p (\a v -> First (maybe (if f a then Just a else Nothing) Just (unwrap v))) (First Nothing)
источник

к

кана in PureScript — русскоговорящее сообщество
Vasiliy Yorkin
а для чего этот filtered нужен?
Покажи как ты это вставишь в цепочку линз
источник

ЗП

Зигохистоморфный Препроморфизм in PureScript — русскоговорящее сообщество
Vasiliy Yorkin
а для чего этот filtered нужен?
ну как пример
logShow $ ((1..10) # traversed <<< filtered (_== 3) .~ 1234) :: Array Int
источник

VY

Vasiliy Yorkin in PureScript — русскоговорящее сообщество
кана
Покажи как ты это вставишь в цепочку линз
ну вот я не знаю как им пользоваться как раз) теперь увидел
источник

VY

Vasiliy Yorkin in PureScript — русскоговорящее сообщество
Зигохистоморфный Препроморфизм
ну как пример
logShow $ ((1..10) # traversed <<< filtered (_== 3) .~ 1234) :: Array Int
хм, забавно: [1,2,1234,4,5,6,7,8,9,10]
спасибо. да, в общем я загоняюсь, мне нужен был просто фильтр с линзой, просто стало интересно что это за фигня такая, никогда не пользовался https://gist.github.com/vyorkin/2996f549d41145bbc8ac5345ee8b8caf
источник

VY

Vasiliy Yorkin in PureScript — русскоговорящее сообщество
что-то жестко
coords ∷ Parser (Tuple Int Int)
coords = Tuple <$> pos <*> pos

pos ∷ Parser Int
pos = round <<< readInt 10 <<< String.fromCharArray <<< Array.fromFoldable <$> (optional (char '$') *> many anyDigit)

я думаю это можно как-то правильнее сделать
источник

ЗП

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

VY

Vasiliy Yorkin in PureScript — русскоговорящее сообщество
round <<< readInt 10 точно странно выглядит :) но я не знаю как еще
источник

ЗП

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

ЗП

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

VY

Vasiliy Yorkin in PureScript — русскоговорящее сообщество
ну он Number возвращает) а это координаты ячейки у меня просто
источник

ЗП

Зигохистоморфный Препроморфизм in PureScript — русскоговорящее сообщество
fromString <<< String.fromCharArray ...

fromString из Data.Int
источник

VY

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

ЗП

Зигохистоморфный Препроморфизм in PureScript — русскоговорящее сообщество
вообще меня не устраивает парсер для цифр (он кривой, потому что там parseFloat/parseInt, а он жрет всякое говно, а  мне надо было нормальный парсер и я написал вот)
baseNumber = maybe (fail "Cannot parse number") pure =<< fromString <<< fold <$> do
 x <- opt $ string "-"
 y <- opt $ (string "0" <|> (map fromCharArray $ some digit))
 z <- opt $ fromCharArray <$> ((:) <$> char '.' <*> some digit)
 w <- opt $ fold <$> do
   w1 <- string "e" <|> string "E"
   w2 <- opt $ string "+" <|> string "-"
   w3 <- map fromCharArray $ some digit
   pure [w1,w2,w3]
 pure [x,y,z,w]
   where
     opt = option ""
источник

VY

Vasiliy Yorkin in PureScript — русскоговорящее сообщество
прикольно) попробую сравнить реализации
источник

ЗП

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

ЗП

Зигохистоморфный Препроморфизм in PureScript — русскоговорящее сообщество
у меня просто fromString :: String -> Maybe Number
источник

ЗП

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