2012-06-27 9 views
9

I nomi di variabile in Haskell bisogno di essere nel piccolo caso, maCome per citarne variabili Haskell, che in fisica sono maiuscoli

Come dichiarare le variabili nel file di .hs, se vogliamo conservare g = 9.8 e G = 6.67300 × 10-11 (nello scenario seguente)?

Convenzionalmente fisici citare:

(1) accelerazione dovuta alla gravità sulla terra

g = 9,8 m/sec^2

(2) Universale gravitazionale costante

G = 6,67300 × 10-11 m3 kg-1 s-2

+1

È possibile implementare una sorta di gestore che sputa effettivamente le costanti, forse anche facendo moltiplicazioni di base in modo che PhysicsConsts "gG" sia g * G. L'implementazione di una corretta DSL potrebbe essere proprio ciò che il medico ha ordinato. – Sarah

+1

@Sarah: una "math" DSL sarebbe davvero fantastica. Sarebbe anche molto bello se potessi passare da una stringa di formule a una funzione: potresti quindi incorporare letteralmente le formule pertinenti, un buon esempio di codice di autocertificazione. Mi chiedo come si possa implementare qualcosa del genere in un modo sicuro dal punto di vista dei caratteri. Avere unità applicate dal sistema dei tipi sarebbe fantastico anche; Ricordo di aver letto di F # facendo qualcosa del genere. –

+0

@TikhonJelvis: parlare di overkill LOL –

risposta

12

Devi solo trovare un altro nome. La distinzione tra i nomi che iniziano con lettere maiuscole e minuscole fa parte della sintassi.

Mentre questo può essere sfortunato nel tuo caso, è un compromesso di progettazione. Per semplificare la differenziazione tra cose diverse (ad esempio tra variabili e costruttori), gli identificatori che iniziano con lettere minuscole e quelli che iniziano con lettere maiuscole sono fondamentalmente diversi.

9

Si potrebbe dare loro nomi significativi. Solo perché storicamente i matematici e i fisici amavano usare simboli imperscrutabili senza interpretarli diversamente dalla memorizzazione a memoria non significa che tu debba farlo. Stiamo scrivendo ora, non scrivendo long-hand, quindi definire le equazioni in termini di earthGravity e gravitationalConstant non è molto più difficile da scrivere rispetto ai termini di g e G ed è molto più facile da leggere!

Oppure, è possibile designare che tutti gli identificatori preceduti da qualcosa come c rappresentano costanti ben note standard e utilizzano cg e cG.

+2

Non lo so: leggere una * formula * con nomi di una singola lettera ben noti è più facile che leggere la stessa formula con nomi di forma lunghi. È molto più facile vedere l'intera formula a colpo d'occhio con nomi più brevi rispetto a nomi come "earthGravity". –

+1

@TikhonJelvis Vero, sono un po 'ingenuo.Dato che i nomi di simboli singoli esistono già e * sono * ben noti, i nomi tradizionali sono un po 'più facili da leggere. Ma se tutto il codice fosse scritto in quel modo, sarebbe incomprensibile. Hai mai visto un programma scritto in APL? – Ben

2

Vorrei semplicemente utilizzare g e _G. Penso che il trattino basso non sia troppo distratto.

+7

Interverrebbe comunque con il meccanismo di GHC per gli avvisi di variabili inutilizzate: i nomi che iniziano con un trattino basso vengono ignorati. –

+1

Accidenti, hai ragione. Suggerisco 'g' e' bigG'. –

+2

Oh, non lo sapevo. – Landei

Problemi correlati