Ya, ini :
{-#LANGUAGE TypeOperators, RankNTypes #-}
import Control.Morphism.Zygo
import Control.Morphism.Prepro
import Control.Morphism.Histo
import Control.Functor.Algebra
import Control.Functor.Extras
import Control.Functor.Fix
import Control.Comonad.Cofree
zygohistomorphic_prepromorphism
:: Functor f
=> Algebra f b
-> GAlgebra f (ZygoT (Cofree f) b) a
-> (f :~> f)
-> FixF f
-> a
zygohistomorphic_prepromorphism f
= g_prepro (distZygoT (liftAlgebra f) (distHisto id))
Ya, saya tahu itu lelucon ( HHOS ). Saya mencari contoh dunia nyata untuk nilai retas sederhana dan yang terakhir, tetapi tidak kalah pentingnya, untuk menambahkannya ke wiki yang mengatakan "Ini adalah cara idiomatik untuk mengekspresikan XYZ". Saya akan memberi hadiah jika Anda gagal menemukan solusi. Jika Anda benar-benar bingung dengan apa yang mereka bicarakan, Edward memposting penjelasan singkat tentang reddit.
Jawaban yang Layak harus:
melakukan sesuatu yang setidaknya secara jarak jauh dan bermanfaat secara teori. Yaitu, jawaban yang mengurangi untuk
id
keluar.gunakan semua fitur skema, tidak ada id, atau const, atau yang setara.
tidak sama baiknya diungkapkan dengan lipatan vanilla sederhana atau semacamnya, jadi jangan hanya menerapkan
product
cara berkelok-kelok.
Poin bonus akan diberikan kepada:
Masalah atau algoritma yang terkenal
dipecahkan, masing-masing diungkapkan, dengan cara yang tidak biasa yang menguntungkan
kejelasan dan / atau kinerja
dan / atau nilai retas
dan / atau lulz, kira-kira dalam urutan itu, juga
jawaban tingkat tinggi (yay demokrasi)
Harap perhatikan juga jawaban Edward di bawah ini. Apa implementasi ZHPM yang Anda gunakan adalah pilihan Anda.
sumber
IO
dalam tumpukan Anda, kami bisa menggunakanlaunchMissles
fungsi terkenal SimonPJ . Tapi saya kira inti dari semua omong kosong abstrak super-murni adalah untuk menghindari kemungkinan hal-hal seperti itu.a
bisa apa saja, jadi jangan ragu untuk membangun nilai IO yang secara strategis meluncurkan rudal berdasarkan penilaian data input Anda.Jawaban:
Sharon Curtis dan Shin-Cheng Mu memiliki Mutiara Fungsional menggunakan zygomorphisms untuk menemukan segmen padat maksimal (generalisasi jumlah segmen maksimum). Zygomorphisms tampaknya sangat cocok untuk masalah sliding window begitu Anda terbiasa.
http://www.iis.sinica.edu.tw/~scm/2010/functional-pearl-maximally-dense-segments/
Saya akan mencalonkan penulis untuk kredit tambahan karena mereka telah menghindari penggunaan functor Mu titik tetap.
sumber
foldr
dapat melihat daftar yang sudah dibuat), tetapi prepro tidak segera jelas bagi saya. Bisakah Anda menguraikan? (dan, jika mungkin, berikan kode pendek + manis yang bisa kita tempel ke halaman wiki?)Catatan, tanda tangan ini telah berubah, karena itu tidak cukup umum, dan saya memasukkannya (sebagai lelucon) dalam paket skema rekursi saya .
Implementasinya juga disederhanakan.
Dan dari implementasi baru harus jelas bagaimana menerapkan prepromorfisme zygohistomorphic umum , dengan melonggarkan kendala bahwa Anda memiliki
(Base t)-Branching
aliran, melalui penggunaandistGHisto
sebagai gantinya.sumber