312 |
[Ty.T_Tensor(Ty.ShapeVar s1), Ty.T_Tensor(Ty.ShapeVar s2)] |
[Ty.T_Tensor(Ty.ShapeVar s1), Ty.T_Tensor(Ty.ShapeVar s2)] |
313 |
--> Ty.T_Tensor(Ty.ShapeVar s3))) |
--> Ty.T_Tensor(Ty.ShapeVar s3))) |
314 |
|
|
315 |
|
(* load image from nrrd *) |
316 |
|
val fn_image = polyVar (N.fn_image, all([NK, SK], |
317 |
|
fn [Ty.DIM d, Ty.SHAPE dd] => let |
318 |
|
val d = Ty.DimVar d |
319 |
|
val dd = Ty.ShapeVar dd |
320 |
|
in |
321 |
|
[Ty.T_String] --> Ty.T_Image{dim=d, shape=dd} |
322 |
|
end)) |
323 |
|
|
324 |
val fn_inside = polyVar (N.fn_inside, all([DK, NK, SK], |
val fn_inside = polyVar (N.fn_inside, all([DK, NK, SK], |
325 |
fn [Ty.DIFF k, Ty.DIM d, Ty.SHAPE dd] => let |
fn [Ty.DIFF k, Ty.DIM d, Ty.SHAPE dd] => let |
326 |
val k = Ty.DiffVar(k, 0) |
val k = Ty.DiffVar(k, 0) |
331 |
--> Ty.T_Bool |
--> Ty.T_Bool |
332 |
end)) |
end)) |
333 |
|
|
334 |
val fn_load = polyVar (N.fn_load, all([NK, SK], |
(* load dynamic sequence from nrrd *) |
335 |
fn [Ty.DIM d, Ty.SHAPE dd] => let |
val fn_load = polyVar (N.fn_load, all([TK], |
336 |
val d = Ty.DimVar d |
fn [Ty.TYPE tv] => [Ty.T_String] --> Ty.T_DynSequence(Ty.T_Var tv))) |
|
val dd = Ty.ShapeVar dd |
|
|
in |
|
|
[Ty.T_String] --> Ty.T_Image{dim=d, shape=dd} |
|
|
end)) |
|
337 |
|
|
338 |
val fn_length = polyVar (N.fn_length, all([TK], |
val fn_length = polyVar (N.fn_length, all([TK], |
339 |
fn [Ty.TYPE tv] => [Ty.T_DynSequence(Ty.T_Var tv)] --> Ty.T_Int)) |
fn [Ty.TYPE tv] => [Ty.T_DynSequence(Ty.T_Var tv)] --> Ty.T_Int)) |