2011-06-16 17 views
25

Bottom in Haskell que se describe aquí se dice que es cualquier cálculo que tiene errores, no está terminado o implica bucle infinito, es de cualquier tipo ... ¿Es esto específico de Haskell? Sabemos que en la teoría de Enrejado, también hay una noción de Bottom allí ..... y no debería definirse en base a lo que se define el orden?El concepto de Inferior en Haskell

+2

Me pregunto si esto puede pertenecer a su pregunta: http://blog.ezyang.com/2010/12/hussling-haskell-types-into-hasse-diagrams/ –

+0

Ver también http://stackoverflow.com/questions/3962939/whats-the-difference-between-undefined-in-haskell-and-null-in-java –

+0

¡Agradable! ¡Me he estado preguntando 'Null' y' Object' en Java también! –

Respuesta

35

De hecho hay un orden de definición, donde abajo es el valor menos definido. Eche un vistazo a this page about denotational semantics in Haskell para una explicación más completa.

Aquí hay un enrejado para los valores de Maybe Bool tomados de la página wiki. Muestra que Just True está más definido que Just ⊥ que está más definido que .

enter image description here

+4

¡Puntos extra por usar un gráfico! –

+4

¿'Just bottom' es realmente la misma definición que' Nothing'? Ambos tienen una capa de "definición", pero 'Nothing' es un acabado sólido, mientras que' Just bottom' no lo es. –

+16

@ Dan No son comparables porque no están en la misma cadena. Todo lo que puedes decir es que ambos están por encima de la base. – augustss