2012-06-27 9 views
9

Los nombres de variables en Haskell necesitan estar en pequeña caso, peroCómo nombrar las variables Haskell, que en física están en mayúsculas

Cómo declarar variables en el archivo .hs, si queremos almacenar g = 9,8 y G = 6.67300 × 10-11 (en la situación siguiente)?

Convencionalmente físicos mencionar:

(1) Aceleración debida a la gravedad en la tierra

g = 9,8 m/seg^2

(2) universal gravitacional constante

G = 6.67300 × 10-11 m3 kg-1 s-2

+1

Puede implementar algún tipo de controlador que realmente escupe sus constantes, incluso haciendo multiplicaciones básicas para que physicsConsts "gG" sea g * G. Implementar un DSL ordenado podría ser exactamente lo que ordenó el médico. – Sarah

+1

@Sarah: Un DSL "mathy" sería realmente genial. También sería genial si pudieras pasar de una cadena de fórmula a una función: entonces podrías insertar fórmulas relevantes literalmente, un buen ejemplo de código de auto-documentación. Sin embargo, me pregunto cómo podría implementar algo así de una manera segura. Tener unidades aplicadas por el sistema de tipo sería increíble también; Recuerdo haber leído sobre F # haciendo algo así. –

+0

@TikhonJelvis: hablar sobre overkill LOL –

Respuesta

12

Tendrás que encontrar otro nombre. La distinción entre nombres que comienzan con letras mayúsculas y minúsculas es parte de la sintaxis.

Si bien esto puede ser desafortunado en su caso, se trata de un compromiso de diseño. Para simplificar la diferenciación entre diferentes cosas (por ejemplo, entre variables y constructores), los identificadores que comienzan con letras minúsculas y los que comienzan con letras mayúsculas son fundamentalmente diferentes.

9

Podría darles nombres significativos. El hecho de que los matemáticos y físicos históricamente les gustara usar símbolos inescrutables sin otra forma de interpretarlos que la memorización mecánica no significa que tenga que hacerlo. Estamos escribiendo ahora, no escribiendo a mano larga, por lo que definir ecuaciones en términos de earthGravity y gravitationalConstant no es mucho más difícil de escribir que en términos de g y G, ¡y es mucho más fácil de leer!

O bien, podría designar que todos los identificadores con el prefijo "c" representan las constantes estándar conocidas y usan cg y cG.

+2

No lo sé: leer una * fórmula * con nombres conocidos de una sola letra es más fácil que leer la misma fórmula con nombres largos. Es mucho más fácil ver la fórmula completa de un vistazo con nombres más cortos que con nombres como 'earthGravity'. –

+1

@TikhonJelvis Cierto, estoy siendo un poco falso.Dado que los nombres de símbolos individuales ya existen y * son * bien conocidos, los nombres tradicionales son un poco más fáciles de leer. Pero si todo el código se escribiera de esa manera, sería ininteligible. ¿Alguna vez has visto un programa escrito en APL? – Ben

2

Simplemente utilizaría g y _G. Creo que el guión bajo no distrae mucho.

+7

Sin embargo, interactuaría con el mecanismo de GHC para advertencias de variables no utilizadas: se ignorarán los nombres que comiencen con un guión bajo. –

+1

Gee, tienes razón. Sugiero 'g' y' bigG'. –

+2

Oh, yo no sabía esto. – Landei

Cuestiones relacionadas