2015-04-25 18 views

cevap

11

Tüm Traversable Örnekler de Foldable, bu yüzden uzağa erimiş almazsa, gerçi bir ara liste hale getirebileceğini

toVector :: Foldable t => t a -> Vector a 
toVector = Vector.fromList . Foldable.toList 
{-# INLINE toVector #-} 

Bu gibi bir şey yazabilirsiniz. Çizgiler füzyonun daha olası olmasına yardımcı olmalıdır.

+0

Ben sadece bir çekim vardı ve daha büyük engel gibi görünüyor, 'Vector' tüketicileri, temelde, sadece kütüphanenin' Stream 'türüne verimli bir şekilde dönüştürebilecek veri türleri ile birleştirebilirsiniz. Bu yüzden, 'Vector' tüketicilerini keyfi bir' Katlanabilir 'ile neden birleştiremediğinizi düşünmüyorum çünkü uncons :: [a] -> Belki (a, [a])' yi neden uygulayamıyorsunuz? sadece 'foldr'. ("Katlanabilir.foldr" ve "Stream.unfoldr" terimleriyle "toVector" yazmayı deneyin, "Katlanabilir.toList" i yeniden etkinleştirmeden - Yapılabileceğini sanmıyorum ...) Böylece çözümünüz uygun olabilir . –

İlgili konular