Estoy comenzando con SML, y estoy tratando de modificar algunos códigos, así que entiendo lo que está haciendo (no puedo encontrar un depurador SML/NJ decente, pero esa es una pregunta aparte).¿Cómo se imprime dentro de una declaración de caso en SML?
fun type_check e theta env non_gens =
case e of
constant_int _ => (integer,theta)
|
constant_bool _ => (boolean,theta)
| ...
supongo que es un código válido en ese constant_int es parte de un tipo de datos ya se declaró, etc. ¿Cómo agrego una sentencia print decir 'que vuelve 'número entero'' para el caso? Probé:
...
constant_int _ => (print "returning integer") (integer,theta)
...
Pero consigo:
stdIn:167.22-167.65 Error: operator is not a function [tycon mismatch] operator: unit in expression: (print "returning integer") (integer,theta)
Creo que no estoy entendiendo cómo ejecutar una secuencia de instrucciones, sólo el último de los cuales debe ser entendido como el valor de retorno. ¿Algún consejo?
Además, ¿cómo imprimiría mi propio valor de tipo de datos? A SML no le gustó cuando intenté pasar un valor de tipo de datos a print(), así que probablemente tenga que crear una nueva función de impresión para cada tipo de datos, ¿es correcto?
¿No te refieres a una mayor precendencia? – Shuzheng
@nlykkei: No, me refiero a menor precedencia. La expresión de caso se agrupa primero porque tiene una mayor precedencia, dejando el punto y coma, que tiene una precedencia más baja, siendo la estructura más externa. – newacct