Map k [v]
(Data.Map.Strict) öğesini Maybe (Map k v)
içine döndüren bir işlev oluşturmak istiyorum.Harita k [v] -> Belki (Harita k v) yapmak için daha iyi yollar var mı?
Yaptığı şey şudur: listelerin herhangi tam olarak bir unsuru yoksa
- , işlev
Nothing
döndürür. - Listelerin tümü tam olarak bir öğeye sahipse, bir
Just
içine sarılmış beklenen haritayı döndürür. Aklıma
tek şey foldrWithKey'
veya foldlWithKey'
ile elle yapmaktır. Daha iyi yollar var mı?
'JustOne' işlevini biraz genelleştirebileceğinizi unutmayın: 'foldr (\ a _ -> saf a) boş :: (Alternatif f, Katlanabilir t) => ta -> fa', sezgisel olarak üreten kapsayıcı boşsa en sağdaki öğe veya başarısız. – user2407038
@ user2407038, en soldaki. – user3237465
@ user2407038. Evet, Katlanabilir genelleme iyidir, ancak 'saf' genellemenin çok faydalı olduğundan emin değilim. Örneğin herhangi bir uygulama için yararlı ve beklenen bir şey yapar mı (ör., "ZipList" veya "(->)')? İlgili: https://wiki.haskell.org/Why_not_Pointed%3F – jpath