1樓:Nugine
這裡給出兩種實現。
符合理論要求的:fny
&dynFn(
A)-> O,A
)-> O
)-> implFn(
A)-> O
}impl
<'a,
A,O>
Copy
forX
<'a,
A,O>
{}impl
<'a,
A,O>
X<'a,
A,O>
}move|a
|(|x: X
|x.call(x
,a))(X(&|
x,a|
f(&|a
|x.call(x
,a),a
)),a)}
犯規的:fny
<'a,
A,O>
(f: implFn(
&dynFn(
A)-> O,A
)-> O+'a
)-> implFn(
A)-> O+'a
move|a
|real_y(&
f)(a)
}詳細解釋請看專欄
Nugine:Rust 有趣片段(三):Y 組合子
2樓:HOOCCOOH
type 相當於 alias,是不能迴圈套型別的。
首先你需要給這個引數是自己的函式型別包一層 struct,通過 Box 或引用來指定函式以避免閉包引用自身型別(這是不允許的)。
乙個簡單的例子是這樣(這個 call() 是目前 Fn-family trait 還沒穩定的代替方案...)
pubstruct
Rec<'a,
T,U>(&
'adynFn(
Rec U>,T )-> U );impl <'a, T: 'a ,U: 'a >Rec<'a, T,U>}pubfny Rec U>,T )-> U )-> implFn( T)-> U fnmain ()else });fornin 0..=10 : {}",n ,fact(n ));} }Rust Playground 這個實現方案中的 &dyn 動態分發好像會被優化掉,但尾遞迴優化不了。 HOOCCOOH:(半個)0-cost Y Combinator in Rust Star璀璨 我覺得本身layback的唱法就挺不易,而且狗哥卡的都很準,風格很獨特,聲音也很具有辨識度,歌詞也寫的很real很打動人 睡不醒的冬三月 可能回答有點走偏,但還是想表達一下聽他們的歌時的感受 單曲迴圈了一首歌很久之後,換下一首歌聽時,會發現我天這首歌更好聽啊!每次換歌都有這種感受 峰徐... 偏路人,看過青 真是搞不懂他為什麼不火?搖裡唯一乙個靠前出道還沒有塌房的人,說到搖,他明明在青排名很高位,結果出道第四?最低也得第三吧?他本人素質也挺好的,粉絲素質也可以,搖團的某幾位粉絲成天引戰,拉踩這個拉踩那個,好感都沒。他算是搖團黑料最少的乙個吧?他挺溫柔的,在青會幫助D班的訓練生,在jy受傷... poorgod 建議讀英文版的 guide to fm 搞清楚每一項戰術指令 個人戰術指令 定位球指令 心態 自由度的含義。了解自己的球隊。知道每個球員的特點 踢球習慣。根據其特點和位置熟悉度 球隊板凳深度制定戰術。根據對手特點制定臨場戰術,根據形勢變化進行林場調整。我一直不太相信網上的各種包打天下...如何評價南韓組合leessang中Gary的說唱水平
如何評價UNINE組合中的管櫟?
如何在Football Manager中制定正確的戰術?