uqbar-project / wollok

Wollok Programming Language
GNU General Public License v3.0
60 stars 16 forks source link

Null, void y la mar en coche #1944

Open nscarcella opened 3 years ago

nscarcella commented 3 years ago

Hay una propuesta de ser más explicitos y sobre la naturaleza de null y decir que es un objeto. Conceptualmente, para un alumno, ya es un objeto. Podría estar bueno hacer que sea un object posta de lang (simplificaría bastante algunos chequeos y natives) pero puede ser muy costoso y no valer la pena.

Podríamos abrir otro ticket a más largo plazo para reificar el null. Una alternativa temporal sería crear un objeto null en lang e ignorarlo en wollok-xtend. Para esto tendríamos que hacer sanities de todas las operaciones de Object para null (creo que muchos ya existen) y hay que testear casos donde sea la propia vm la que le tira los mensajes.

Vamos a no cambiar "null" por "nothing" para no migrar mil ejemplos.

JuanFdS commented 3 years ago

Si el valor inicial de las variables pasase a ser algo que no es null, tendría sentido (y sería posible) sacar null del lenguaje directamente? En que casos querríamos que lo usen a diferencia de alguna otra alternativa?

PalumboN commented 3 years ago

@JuanFdS Eso se charló ese día, y creo que consensuamos en dejar null para esos casos que realmente querés que un atributo no tenga ningún valor, contemplado por el dominio (y evitar forzar a modelar con Null Objects cuando podría no ser necesario).

JuanFdS commented 3 years ago

@PalumboN awww me perdí la discusión D:. Pero aun en esos casos es null la mejor opción? Que tan seguido aparece ese problema? Y no se podrían cubrir esos casos con algo como un Option al que se le puedan mandar mensajes?

Además, por más de que el lenguaje venga sin null, de ser absolutamente necesario no debería ser mas dificil que: object nada {} para que ahora exista y se pueda usar, no?