Конструктор несвязанных типов для типа данных - PullRequest
0 голосов
/ 12 октября 2018

если я инициализировал тип данных dataype dd = DAT of int*int, как мне инициализировать тип этого для функции.

Ответы [ 2 ]

0 голосов
/ 12 октября 2018

Вы также можете сопоставлять паттерны непосредственно в функции, а не с case-of:

datatype Cint = CI of int * int

fun get_first_val (CI (a, _)) = a
fun get_second_val (CI (_, b)) = b

fun cadd (CI (a1, b1), CI (a2, b2)) =
  CI (a1+a2, b1+b2)
0 голосов
/ 12 октября 2018

Тип называется Cint, а не CI, поэтому вы должны использовать Cint в местах, где требуется тип:

fun cadd(a:Cint, b:Cint) =

Или вы можете использовать другой синтаксис, включающийшаблон, если вы хотите продолжать использовать конструктор типа данных CI:

fun cadd(a as CI _, b as CI _) =
...