簡體   English   中英

當事先不知道類型化的球拍中的Arity時,實例化可變參數多態過程的“ rest”參數的類型

[英]Instantiate the type of the “rest” parameter of a variadic polymorphic procedure when arity is not known in advance in typed Racket

假設我要轉置2 xn的“矩陣”(列表列表) mat 在球拍中慣用的方式是

(apply map list mat)

為了在打字/球拍中做同樣的事情,我必須稍微幫助一下類型檢查器。 在這種情況下, map類型為

(All (c a b ...) 
  (-> (-> a b ... b c) (Listof a) (Listof b) ... b (Listof c)))

由於我處理的是2 xn矩陣,因此我必須將a和b都實例化為Number

(apply (inst map (Listof Number) Number Number) 
       (inst list Number)
       mat)

如果mat是3 xn的矩陣,

(apply (inst map (Listof Number) Number Number Number)
       (inst list Number)
       mat)

會做到的。 現在,假設我正在處理一個mxn矩陣,其中m是一些未知的正整數。 有沒有一種通用的實例化map方法,該方法適用於任何m值?

謝謝Sorawee Porncharoenwase,這幾乎解決了我的問題。 這是我所做的:

  1. 在提供的鏈接中定義一個多態zip函數:
(: zip (∀ (a) (-> (Listof a) (Listof a) * (Listof (Listof a)))))
(define (zip lst . lsts)
  (apply map (inst list a) lst lsts))
  1. 應用於mat
(apply zip (car mat) (cdr mat))

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM