Ricordo di aver letto da qualche parte che Hindley Milner era una restrizione sul sistema-f. In questo caso, qualcuno potrebbe fornirmi alcuni termini che possono essere digitati in system-f ma non in HM.Quali sono alcuni tipi e/o termini in system-f che non possono essere espressi in Hindley Milner
9
A
risposta
10
Qualsiasi cosa implichi un polimorfismo di livello superiore (vale a dire "di prima classe"). Ad esempio:
lambda f : (forall A. A -> A). (f Int 1, f String "hello")
Questa funzione avrebbe il tipo (forall A. A -> A) -> Int * String
, che non esprimibile in HM, dove tutti i regimi di tipo polimorfici devono essere in "prenessa" forma (cioè il quantificatore può verificarsi solo all'esterno, non annidato).
Problemi correlati
- 1. Comprensione dei politipi in un'inferenza di tipo Hindley-Milner
- 2. Hindley Milner Type Inference in F #
- 3. Forma corretta di letrec nel sistema di tipo Hindley-Milner?
- 4. Perché alcuni caratteri ASCII non possono essere espressi nel formato '\ uXXXX' nel codice sorgente Java?
- 5. Quali tipi di dati C# possono essere tipi nullable?
- 6. Algoritmo Hindley-Milner: utilizzo dei tipi per garantire l'applicazione dei binding
- 7. Implementazione algoritmo di inferenza di tipo Damas-Hindley-Milner
- 8. Quali classi non possono essere sottoclasse?
- 9. Come eliminare le righe che non possono essere espressi a INT
- 10. Quali lingue possono essere compilate in javascript?
- 11. Quali caratteristiche di Scala non possono essere tradotte in Java?
- 12. Quali sono i bug che possono essere causati in EF disabilitando il rilevamento automatico delle modifiche?
- 13. Quali sono i caratteri validi che possono essere visualizzati in un host URL?
- 14. Intervallo di numeri interi che possono essere espressi esattamente come float/doubles
- 15. In Linux, quali tipi di file sono mappati in memoria?
- 16. Descrivi l'inferenza di tipo Damas-Milner in modo che uno studente CS101 possa capire
- 17. In Ruby, Quali strutture possono essere nidificate in `rescue` in
- 18. Perché alcuni array possono essere pubblicati ma non altri?
- 19. Quali tipi di libreria standard OCaml non possono essere sottoposti a marshalling?
- 20. Quali sono gli altri thread in un'applicazione VCL predefinita e possono essere denominati per scopo?
- 21. Quali tipi di funzioni C++ possono essere posizionati in un puntatore a funzione C?
- 22. Quali funzioni ricorsive non possono essere riscritte utilizzando i loop?
- 23. Quali tipi di file e cartelle possono essere ignorati per il controllo di versione in MonoTouch
- 24. Quali tipi di numeri sono rappresentabili in virgola mobile binario?
- 25. Quali sono alcuni suggerimenti che un algoritmo dovrebbe parallelizzare?
- 26. Ci sono monadi che possono essere usati come un automa?
- 27. Quali sono alcuni script di shell interessanti?
- 28. Quali sono alcuni dei requisiti che IronScheme non è stato in grado di completare?
- 29. quali database possono essere utilizzati con java?
- 30. I tipi statici non possono essere utilizzati come parametri
Non sai cosa intendi, quell'espressione non è una funzione. Le definizioni (rilegato via let) possono essere polimorfiche con HM, ma i parametri di funzione non possono. –