Laemmel と SPJ による2003 年のScrap Your Boilerplate ペーパーの 3 ページにコード スニペットがあります。
mkT :: (Typeable a, Typeable b) => (b -> b) -> a -> a
mkT f = case cast f of
Just g -> g
Nothing -> id
そして紙は説明します
つまり、mkT fx は、x の型が f の引数の型と同じ場合、f を x に適用します。
cast f
この論文の前の例のパターンに従って、の型を上記の型と比較してMaybe (b -> b)
に評価する必要があると思いますJust g
が、これは正しくないようです。
の署名でここで何が起こっているのcast f
ですか?