uqbar-project / function-laboratory

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

Remove $ and third slot of composition when nesting compositions #12

Open mmatos opened 4 years ago

mmatos commented 4 years ago

When nesting compositions, the $ and third slot in the composition looks odd: imagen

Even though it works to prove that if you try to apply it, it is rejected: imagen

I don't think that's something anyone would try to do in real life...

Showing it as id . id ? doesn't seem fitting either, so it might be best to just remove the $ and third slot altogether.

PalumboN commented 4 years ago

@asanzo quería algo así pero para todas las funciones, no?

asanzo commented 4 years ago

Jjajajaj lo que yo quiero es ser delgado y abrazarles, aunque por ahora me estoy conteniendo de ambas.

Mi propuesta es si esto intenta imitar las ideas funcionalosas, especialmente el alto orden y el tipado, siento que necesito:

1) una forma de entender por qué no encaja y en dónde sí encajaría (entiendo que decidieron hacerlo por color, aunque en mis sueños más húmedos tengo bloques que tienen distinta forma para distinto tipo, y agujeros donde claramente calzan y agujeros donde claramente no, y está resuelto de una forma simpática el encastre de cosas con polimorfismo paramétrico como el caso de recibir funciones por parámetro)

2) (esto sí tiene q ver con el issue) una forma de diferenciar las cosas que puedo aplicar de las que no. Es decir, con un vistazo rápido me gustaría saber qué expresiones son o están "cerradas" (como el caso del bloque 0 siempre, o el id cuando está metido en la composición, porque no lo quiero aplicar más).

Usar el "collapse" de Blockly de un bloque para cuando algo deja de ser aplicable es simpático, pero se queda bastante corto. Para mí un primer approach no debería ser usar el collapse, porque tiene una semántica y decisiones de diseño a veces contraproducente (por ejemplo ocultar los parámetros que le pasaste a la función).

Un primer approach podría ser sencillamente eliminar el último value input del bloque cuando la función es pasada por parámetro. De esta forma, id se parecería a un valor, se parecería a un 0, que es un poco lo que estás buscando.

En el caso que pasó la jefa, quedaría así:

composi

Porque:

PalumboN commented 4 years ago

Compro todo lo que decís. El $ lo había pedido @mmatos para que se pareciera a lo que escriben en el código. A mí me parecía simpático.

asanzo commented 2 years ago

La aplicación es ULTRA necesaria, esa abstracción TIENE que existir en este lenguaje, así como las lambdas, la combinación es explosiva. Ver: https://github.com/uqbar-project/function-laboratory/issues/20#issuecomment-1154545122