10 Inspirado en el surtido de otros 'Consejos para jugar al golf en lenguaje xyz'. Como de costumbre, solo sugiera sugerencias que sean específicas de OCaml y no programación en general. Un consejo por respuesta por favor. code-golf tips variables heladas fuente 1 ¿Te importa si agrego algunos consejos obvios? Édouard Respuestas: 4 Usar funciones en lugar de partido let rec f=function[]->0|_::t->1+f t es más corto que let rec f x=match x with[]->0|_::t->1+f t Édouard fuente 3 Nunca use comenzar [...] final Esta: begin […] end siempre es sinónimo de esto: ([…]) Édouard fuente 2 Definir varias variables o funciones a la vez. Gracias a las tuplas, puede definir varias variables a la vez. Y como funciones son ciudadanos de primera clase ...: let f,g=(fun x->x+1),fun x->2*x Sin embargo, no puedes escribir: let f,g=(fun x->x+1),fun x->2*f x Error: valor independiente f Desafortunadamente, no puede evitar el problema usando rec: let rec f,g=(fun x->x+1),fun x->2*f x Error: solo se permiten variables como el lado izquierdo de let rec Édouard fuente 2 Explotar curryied funciones Las funciones en OCaml están al curry. Puede ser útil explotar ese hecho a veces. let n y=f x y puede ser escrito let n=f x Si necesita operaciones aritméticas, puede rodearlas con paréntesis para que se comporten como funciones de prefijo estándar. (+)` (-)` let n=(+)1;; n 3;; - : int = 4 Édouard fuente
4 Usar funciones en lugar de partido let rec f=function[]->0|_::t->1+f t es más corto que let rec f x=match x with[]->0|_::t->1+f t Édouard fuente
3 Nunca use comenzar [...] final Esta: begin […] end siempre es sinónimo de esto: ([…]) Édouard fuente
2 Definir varias variables o funciones a la vez. Gracias a las tuplas, puede definir varias variables a la vez. Y como funciones son ciudadanos de primera clase ...: let f,g=(fun x->x+1),fun x->2*x Sin embargo, no puedes escribir: let f,g=(fun x->x+1),fun x->2*f x Error: valor independiente f Desafortunadamente, no puede evitar el problema usando rec: let rec f,g=(fun x->x+1),fun x->2*f x Error: solo se permiten variables como el lado izquierdo de let rec Édouard fuente
2 Explotar curryied funciones Las funciones en OCaml están al curry. Puede ser útil explotar ese hecho a veces. let n y=f x y puede ser escrito let n=f x Si necesita operaciones aritméticas, puede rodearlas con paréntesis para que se comporten como funciones de prefijo estándar. (+)` (-)` let n=(+)1;; n 3;; - : int = 4 Édouard fuente
Respuestas:
Usar funciones en lugar de partido
es más corto que
fuente
Nunca use comenzar [...] final
Esta:
siempre es sinónimo de esto:
fuente
Definir varias variables o funciones a la vez.
Gracias a las tuplas, puede definir varias variables a la vez. Y como funciones son ciudadanos de primera clase ...:
Sin embargo, no puedes escribir:
Desafortunadamente, no puede evitar el problema usando
rec
:fuente
Explotar curryied funciones
Las funciones en OCaml están al curry. Puede ser útil explotar ese hecho a veces.
puede ser escrito
Si necesita operaciones aritméticas, puede rodearlas con paréntesis para que se comporten como funciones de prefijo estándar.
(+)
`(-)
`fuente