Quali sono alcune intuizioni che supportano la chiamata del costruttore Maybe in Haskell "Just"?


11

L'intuizione di tipo opzionale come Maybe Intè che o non v'è alcuna Int (quindi, c'è Nothinglì) o che vi sia qualche Int; c'è qualcosa lì.

Per me ha senso che chiamiamo il costruttore di tipo per il caso "negativo" Nothing, dal momento che significa esattamente questo - che non Intc'è. Ma perché usare la parola Solo nel caso in cui l'enfasi è su qualcosa di davvero essere lì ?

Per me, la parola "Just" porta la connotazione secondo cui la cosa che sta descrivendo è inferiore all'alternativa; l'opposto di qualcosa che si trova effettivamente lì; per esempio,

A: Stasera farai qualcosa?

B: No; Starò solo a guardare la TV.

A: Hai indagato sui suoni inquietanti del fantasma intorno a casa tua?

B: sì, si scopre che in realtà era solo un gufo.

Chiaramente mi manca l'intuizione su cui si basava questa scelta di denominazione. Che cos'è? Perché per me la parola significa solo l'opposto di come viene usata nel Maybetipo.


4
In questo caso, penso che alla Scala sia stato assegnato il nome migliore di Some invece di None (senza dire che è l'invenzione della Scala).
Andres F.

3
@AndresF. Risale almeno alla ML che Odersky conosceva decisamente bene.
Derek Elkins lasciò SE il

2
@RobertHarvey Se un Haskeller usasse Maybeuna monade, probabilmente userebbe returne probabilmente qualcosa di simile mzeroinvece di Nothing. Quando Justviene usato direttamente, di solito Maybenon viene utilizzato in stile monadico a quel punto.
Derek Elkins lasciò SE il

2
Il precedente storico sarebbe stato il Optiontipo. I progettisti di Haskell probabilmente hanno ritenuto che foo x = Just x"leggere" meglio di foo x = Some x. Allo stesso modo, la definizione data Maybe a = Just a | Nothinglegge abbastanza bene come " Maybe aè uno Just ao è Nothing". Somelegge ragionevolmente bene lì, ma Nonenon per data Option a = Some a | None.
Derek Elkins lasciò SE il

3
Sono ancora vivi. Puoi inviare email a persone come Phil Wadler e Simon Peyton Jones e chiederle. Oppure prova la mailing list di Haskell-Cafe.
Derek Elkins lasciò SE il

Risposte:


2

Ciò è stato spiegato in passato da Simon Peyton Jones. Implica che Niente può essere il valore o 'solo' un singolo altro valore di tipo. C'è 'solo' un'altra cosa che può essere restituita come valore o niente.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.