Birden fazla argüman alan fonksiyonlarla fonksiyonel kompozisyon yapmanın mümkün olup olmadığını merak ediyordum. Bu sayıyı iki sayıya ekleyen bir işleve eşit olarak x ayarı yapmak için x 0 gibi bir şey yapabilmek istiyorum.Haskell'de çok değerli işlevler içeren fonksiyonel kompozisyon?
cevap
Bunu yapmanın birçok yolu vardır, ancak bunların hepsi biraz garip.
((+3).) . (*)
≡ fmap (+3) . (*)
≡ curry $ (+3) . uncurry (*)
≡ \l r -> l*r + 3
Ah, bu ... ne denir tahmin ayrıca kompakt bir tanımı olmasa imza oldu bekleyin
((.).(.)) (+3) (*)
Ben lambda çözümü, en açık olmak olduğunu iddia ediyorum bunun yerine en iyisi. yardımcı olur ve genellikle bir (veya iki) -liner olarak sadece yerel olarak yapılır nedir
, özel Infix olarak bu kompozisyon tanımlamak: basitçe (+3) .: (*)
yazmasına olanak tanır
(.:) :: (c->d) -> (a->b->c) -> a->b->d
f .: i = \l r -> f $ i l r
. Benzer (b->b->c) -> (a->b) -> a->a->c
(için Infix iki bağımsız değişkenler sağ işlevi precompose) için
btw, a widely-used standard implementation vardır.
Ben en sevdiğim, çünkü esas olarak [Frankie Howerd] (http://en.m.wikipedia.org/wiki/Frankie_Howerd) hayal etmeyi sevdiğim için –
+1 fmap (en havalı) ve lambda (üzerinde çalıştığım herhangi bir kod tabanında olmasını isterdim!) – monk
evet - tüm dürüstlükte lambdaya ya da daha iyi bir işleve isim verin: diğer çözümler entelektüel hoş ama daha fazla ya da daha az okunamayan (onları kolayca yeniden keşfedebilirsin ama okunamaz diyebilirim) - bunun gibi şeyler Haskell'e bu kadar çok iyi geliştiricinin Haskell'e bakmasını engelleyen "arcane abanoz-tower" etiketi veriyor – Carsten
Evet, böyle bir şey kullanmak istiyorum:
http://hackage.haskell.org/packages/archive/composition/latest/doc/html/Data-Composition.html
Ayrıca Data.Aviary.Birds den B1 veya karatavuk bağdaştırıcının kullanabilirsiniz. Bence gerçek iş için bir lambda kullanırdım.
- 1. Belirsiz türlerle kompozisyon
- 2. Yalnızca değerler için çok değerli bir alanı nasıl arayabilirim?
- 3. Scala Implicits Fonksiyonel Literallar
- 4. Fonksiyonel Bağımlılık
- 5. "Kapalı kompozisyon altında" anlamı
- 6. Haskell: işlev kompozisyon sadece beynim
- 7. Miras veya kompozisyon kullanmalı mıyım?
- 8. Birden çok değerli alanın sayısı üzerinde çalışan Solr fonksiyon sorgusu
- 9. Düşünce Sfenksinde Çok Değerli Özellikler (MVA) ve yüzler nasıl kullanılır?
- 10. Bu durumda Kalıtım veya Kompozisyon kullanmalı mıyım?
- 11. TDD, fonksiyonel testi assertRegex
- 12. GPU'ya tam fonksiyonel programlama
- 13. Fonksiyonel Programlamada Dizilimi Anlama
- 14. Stajyer 2 fonksiyonel testler
- 15. Matplotlib hexbin'de sıfır değerli renk
- 16. Makefile'deki İşlevler
- 17. Java jenerik: Fonksiyonel benzeri max()
- 18. Kod 212, Kompozisyon ve yetkilendirme tamamlandı
- 19. Özel kalıtım VS kompozisyon: ne zaman kullanılmalı?
- 20. SQL'de Skaler Değerli İşlevleri Çağırma
- 21. Tablo değerli işlevde değişkeni bildir
- 22. Oyunlar için fonksiyonel teknik özellikleri yazma
- 23. Birden çok ek içeren e-posta
- 24. Birden çok alt çizgi içeren metin
- 25. Çok sayıda metin içeren Android textview
- 26. Birden çok öğe içeren Bootstrap carousel
- 27. Anahtar başına birden çok değer içeren sözlük
- 28. Linq, çok koşullu yan tümce tümcelerini içeren
- 29. birden çok sütun üzerinde birden terimlerle İÇEREN
- 30. Birden çok benzeri deyim içeren kayıtlar seçilmiyor
http://conal.net/blog/posts/semantic-editor-combinators – luqui
[This] (http://stackoverflow.com/questions/9656797/variadic-compose-function) aradığınız şey olabilir . – is7s