Created
October 10, 2014 07:07
-
-
Save josejuan/9c87628a9418cbceadc7 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| "I prefer passing simple data to passing functions (codata). Simpler | |
| to reason and to test with *Check." | |
| Yo aún no lo se, en función del problema a resolver quizás deba pasar | |
| una función o no. En todo caso, esperaré que mi función tenga las más | |
| propiedades deseables posibles. | |
| "I prefer functions with small domains." | |
| Yo no, yo prefiero funciones con grandes dominios. | |
| --------------------- | |
| Obviamente, en ambos casos hablamos de funciones con propiedades deseables. | |
| También, obviamente, hablamos de que las soluciones adoptadas son correctas | |
| (por ejemplo "no matamos moscas a cañonazos"). | |
| ¿Porqué prefiero una función con dominios grandes? ¡porque para resolver un | |
| problema Z tendré que escribir menos código! (más fácil de mantener, revisar, | |
| etc...). ¿De testear?, en general sí será más difícil, pero no tanto como | |
| puede parecer. | |
| Si tenemos que ordenar un conjunto, podemos decir que es mejor | |
| Sort( [Int] ) | |
| que | |
| Sort( [a], (a -> a -> Ordering) ) | |
| (ver `qsort` de stdlib de C) | |
| Pero en ese caso su dominio es mucho menor, debiendo escribir muchas más | |
| funciones para cubrir tooooodo el dominio que *debemos* resolver | |
| SortInt( [Int] ) | |
| SortString( [String] ) | |
| ... | |
| Cuando usamos métodos virtuales (interfaces, typeclass, ...) realmente | |
| es *LO MISMO* que pasar como argumento la función, si tenemos | |
| interface ISortable { Sort } | |
| cuando hacemos | |
| myInstanceOf_XType.Sort() | |
| realmente es lo mismo que | |
| Sort( myInstanceOf_XType, XType.Compare ) | |
| y la hora de hacer test, "perse", no tendremos ventajas de un método | |
| frente a otro, puesto que si para los tests estoy usando XType, tanto | |
| me da usar una representación o la otra. | |
| PD: por aclarar la réplica, si en la exclamación "prefiero" se dice en sentido | |
| platónico (ej. me resulta feo pasar un callback pero lo pasaré siempre que | |
| crea que es lo correcto) entonces sólo indica una preferencia y gusto personal. | |
| Mi réplica va dirigida a que esa "preferencia" no debería condicionar la mejor | |
| elección a la hora de codificar la función ¡aunque requiera callbacks!. | |
| :) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment