Kendi başıma bir araya getirdiğim çok fazla şey, aslında hiç bilmediğim standart bir uygulamaya sahip olmakla birlikte, aslında daha önce kullanılan bu tür bir şeyi gördüklerini merak ettim. :Bu Haskell işlevi bilinen/başka bir ad olarak uygulanan mı?
bir monadic işlevi alır ve bir yüklem o zaman yüklem sonucunu döndürür alternatif tarafından seçilene kadar katlayın edecek: adını fark
until :: (Monad m, Alternative m) => (a -> m a) -> (a -> m c) -> a -> m c
f `until` p = \a -> (f >=> (p `altF` (until f p))) a
where f1 `altF` f2 = \a -> f1 a <|> f2 a
başlangıcı çarpışma, ben muhtemelen olacak Başka bir şey isim ama ben zaten bilmiyorum bir standart kütüphanede zaten benzer bir işlevsellik parçası olup olmadığını görmek düşündüm ..
Ayrıca yazdığım kompozisyon alternatifinin başka bir yerde tanımlanmış mı yoksa bu işlevselliklerden herhangi birinin başlaması yanlış görünüyorsa merak ediyorum. Ama benim sorumluğumun püf noktası, bu başka bir yerde uygulanan veya başka bir yerde uygulanan benzer bir şey olabilir belki de
"MonadPlus" ile birlikte "Monad" ve "Alternative" kısıtlamalarını kullanmak isteyebilirsiniz. –
@pelotom Alternatif'i MonadPlus açısından tanımlayabilirsiniz? Ben habersiz, sadece imzamı doğrudan GHCi'den aldım. –
Farklı API'leri tanımlar ama benzer rolleri yerine getirirler ... 'Alternative':' Applicative' :: 'MonadPlus':' Monad'. –