uqbar-project / function-laboratory

https://uqbar-project.github.io/function-laboratory/
GNU General Public License v3.0
3 stars 2 forks source link

Bloque definición #20

Open PalumboN opened 4 years ago

PalumboN commented 4 years ago

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 image

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

PalumboN commented 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("");
  }
};
asanzo commented 4 years ago

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.

asanzo commented 4 years ago

Junto con variables_get, por supuesto.

Selección_999(409)

Se puede sacar el "definir" de la izquierda y poner un "=" a la derecha del nombre de la función

PalumboN commented 3 years ago

Vamos con esto último que tiró @asanzo, toquetear el bloque para que quede piola.

PalumboN commented 3 years ago

Mirar cómo carajo se evalúa esto.

asanzo commented 2 years ago

Pensándolo mejor, yo NO haría este bloque y en su lugar:

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....