¿Es posible crear un tipo con un argumento numérico?Firma de tipo numérico
es decir, si quiero crear un tipo de números enteros con un poco de ancho fijo:
newtype FixedWidth w = FixedWidth Integer
addFixedWidth :: FixedWidth w -> FixedWidth w -> FixedWidth (w+1)
mulFixedWidth :: FixedWidth w -> FixedWidth w -> FixedWidth (2*w)
modo que el tipo ortográfico sólo permite que se añaden o se multiplicaron FixedWidth
s del mismo tipo, pero también determina la precisión correcta del resultado.
Sé que usted puede hacer algo como esto:
data Nil = Nil
data Succ x = Succ
addFixedWidth :: FixedWidth w -> FixedWidth w -> FixedWidth (Succ w)
y representan el número 4 como , pero eso es muy feo. También necesito averiguar cómo agregar dos Succ
s para el tipo de resultado multiplicado.
Quiso decir 7.0.4? – pat