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.
a
bisa apa saja, jadi jangan ragu untuk membangun nilai IO yang secara strategis meluncurkan rudal berdasarkan penilaian data input Anda.
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.