1
Here是完整的規則,但作爲一個簡單的例子,如果A
與'a list list list
類型和f
與'a list -> 'b
類型的功能的3D陣列,我想的函數map'
這需要升降機f
鍵入'a list list list -> 'b list list
。對於具體的例子,map'
將相當於該代碼:,如何使用NumPy類廣播爲多維數組編寫'map'?
fun map' fList aListListList = map (fn aListList => map fList aListList) A
除,當然,我想這map'
不管工作有多少尺寸A
了。我在編寫類型簽名時遇到了麻煩,這往往表明我做錯了。
編輯:這是一個怎樣的解決方法?
fun map' levels f A =
if levels < 1
then return f(A)
else return map' (levels - 1) f A
啊,我懷疑但不確定。你認爲如何讓用戶指定他想要遞減多少級別?它稍微不方便,仍然會打破類型檢查,但至少它會產生正確的輸出。還是有更好的方法來獲得所需的行爲? – Wang 2011-06-12 02:52:24
@Wang:讓用戶指定深度看起來不錯,但您仍然需要自定義數據類型。另外請注意,您在編輯中發佈的代碼將無法正常工作,因爲a)sml中沒有返回關鍵字,並且b)您只調用一次f而根本不建立列表。 – sepp2k 2011-06-12 03:07:18