Open PalumboN opened 4 years ago
Dejo el código que usé para la demo:
Blockly.Blocks['definition'] = {
init: function() {
this.appendValueInput("NAME")
.setCheck(null)
.appendField(new Blockly.FieldTextInput("funcion"), "NAME");
this.setColour(230);
this.setTooltip("");
this.setHelpUrl("");
}
};
Blockly.Blocks['parameter'] = {
init: function() {
this.appendValueInput("NAME")
.setCheck(null)
.appendField(new Blockly.FieldTextInput("param"), "NAME");
this.setOutput(true, null);
this.setColour(230);
this.setTooltip("");
this.setHelpUrl("");
}
Blockly.Blocks['equivalence'] = {
init: function() {
this.appendValueInput("NAME")
.setCheck(null)
.appendField("=");
this.setOutput(true, null);
this.setColour(230);
this.setTooltip("");
this.setHelpUrl("");
}
};
Blockly.Blocks['parameter_var'] = {
init: function() {
this.appendDummyInput()
.appendField(new Blockly.FieldVariable("item"), "NAME");
this.setOutput(true, null);
this.setColour(230);
this.setTooltip("");
this.setHelpUrl("");
}
};
Blockly.Blocks['definition_call'] = {
init: function() {
this.appendValueInput("NAME")
.setCheck(null)
.appendField(new Blockly.FieldVariable("item"), "NAME");
this.setInputsInline(true);
this.setOutput(true, null);
this.setColour(230);
this.setTooltip("");
this.setHelpUrl("");
}
};
Yo revisaría bien https://github.com/Program-AR/proceds-blockly porque creo que procedures_defreturnsimplewithparams
y procedures_callreturnsimplewithparams
resuelven absolutamente todo lo que querés.
Junto con variables_get
, por supuesto.
Se puede sacar el "definir" de la izquierda y poner un "=" a la derecha del nombre de la función
Vamos con esto último que tiró @asanzo, toquetear el bloque para que quede piola.
Mirar cómo carajo se evalúa esto.
Pensándolo mejor, yo NO haría este bloque y en su lugar:
a = algo
, y nada más. Cuando le pedís reducirse, no se reduce. Tiene una manito para obtener el "getter" de esa definición.algo
.Perdón, acabo de tener una charla sobre la materia teoría de lenguajes de la UNIPE con Vir Brassesco @princesamee y le propuse no dar Haskell y en su lugar usar este laboratorio de funciones, por lo que puede quizás parecer un poco "matematicoso" mi comentario :laughing: .
Aunque no veo por qué no podrían existir ambos bloques.
Bah, en realidad si vamos por el lado de la "definición completa" , este bloque debería permitirme poner a la izquierda del "=" también constructores para usar de patrones....
Después de hacer https://github.com/uqbar-project/function-laboratory/issues/19, la posta de las postas es un bloque definición para poder definir funciones. Pensaba en que sería útil tener 3 bloques distintos:
Por ejemplo
Los bloques definición y parámetro deben poder crear sus calls:
Todo esto ya está resuelto de una manera cheta en https://github.com/Program-AR/proceds-blockly