1
我正在嘗試基於術語重寫的Pure語言。如何在Pure語言中定義地圖融合?
我想用一個等式來定義"map fusion",像這樣:
> map f (map g list) = map (f . succ . g) list;
(該succ
是有驗證的規則踢。)
但是,它似乎不工作:
> map id (map id [2,3,4]);
[2,3,4]
個
表達式是使用了「最左邊最裏面」削減戰略
評價,所以我想這是怎麼回事是最裏面的map id [2,3,4]
表達首先降低了,所以我的規則永遠不會踢英寸
如何使地圖融合工作,然後呢?
這是一個相關的實驗。第一條規則並未引發:
> a (b x) = "foo";
> b x = "bar";
> a (b 5);
a "bar"