2012-01-13 18 views
6

Intento usar "let" para definir una definición de expresión, pero todo lo que obtengo son errores.¿Tiene tryhaskell.org definiciones de soporte?

> let double x = x * x 
not an expression: `let double x = x * x' 

¿Hay algún comando especial que debo usar o el compilador de JavaScript no admite esta funcionalidad?

+3

Es curioso cómo todo el mundo en este hilo parece pensar ahora que duplicar es lo mismo que cuadrar;) – Thomas

+2

@Thomas: ¡Haskell no se preocupa por tu fantasía * "aritmética estándar" *! ¡Es solo eso expresivo! – ehird

Respuesta

9

De hecho, no admite definiciones; presumiblemente ya que solo tiene la intención de ser una introducción básica, y probablemente no mantenga ningún estado entre líneas. Como implica su uso de hint, simplemente evalúa expresiones. Además, a diferencia de GHCi, no intenta ejecutar acciones IO (afortunadamente!) Y simplemente intenta imprimirlas (lo que falla, ya que las acciones IO no tienen una instancia Show).

Sin embargo, puede hacer let square x = x * x in square 42 en una sola línea.

Por cierto, pruebe Haskell no usa use un compilador Haskell de JavaScript o algo así; se comunica con un servidor para evaluar las expresiones que ingresa.

En general, es una buena prueba de concepto, y un gran gancho inicial para que la gente se interese en Haskell, pero para cualquier tipo de uso real no es adecuado en lo más mínimo en comparación con algo como GHCi.

Cuestiones relacionadas