Size: a a a

2020 December 08

A

Aminion in Haskell
А нельзя так делать - x
== Just _
?
источник

к

кана in Haskell
isJust x
источник

A

Aminion in Haskell
А если Just Just _
источник

MK

Maxim Koltsov in Haskell
Кейс написать
источник

MK

Maxim Koltsov in Haskell
case x of Just _ ->... ; _ ->...
источник

к

кана in Haskell
тогда или
- изучить линзы
- написать кейс
case x of { Just (Just _) -> True; _ -> False }
источник

к

кана in Haskell
линзы тут как раз помогут сделать такую проверку
is (_Just . _Just) x
или
has (_Just . _Just) x

для has не придется импортировать Control.Lens.Extras, хватит Control.Lens
источник

A

Aminion in Haskell
ух, линзы бездонны
источник

A

Aminion in Haskell
спасибо
источник

к

кана in Haskell
Aminion
А если Just Just _
а ну еще вариант простой
isJust (join x)
источник

A

Aminion in Haskell
жаль, нету синтаксиса для получения булеана, по паттерну
источник

A

Aminion in Haskell
ну, кроме case of
источник

к

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

к

кана in Haskell
какая тут разница между

if x == Just (Just _)
 then f
 else g

и

if is (_Just . _Just) x
 then f
 else g

и

case x of
 Just (Just _) -> f
 _ -> g
источник

A

Aminion in Haskell
Ну мне это нужно как предикат для фильтра
источник

к

кана in Haskell
тогда однозначно советую линзы
источник

к

кана in Haskell
xs ^.. each . filteredBy (_Just . _Just)
источник

A

Aminion in Haskell
кана
xs ^.. each . filteredBy (_Just . _Just)
однако
источник

A

Aminion in Haskell
кана
xs ^.. each . filteredBy (_Just . _Just)
hasn't (at k . _Just . _Just) act
вообще отлично
источник

к

кана in Haskell
hasn't (ix k . _Just)
источник