In almeno alcuni dei linguaggi della famiglia ML, è possibile definire record in cui è possibile eseguire la corrispondenza del modello, ad es. http://learnyouahaskell.com/making-our-own-types-and-typeclasses - l'idea di base è quella di definire un tipo di record con campi denominati, un costruttore viene automaticamente creato con quei campi come parametri in modo da poter creare record di quel tipo e un estrattore viene creato automaticamente con quei campi come parametri in modo da poter creare corrisponde a record di quel tipo.Scala solo linguaggio con estrattori sovraccaricati?
Scala fa un ulteriore passo avanti e consente ai campi memorizzati nel record, ai parametri del costruttore e ai parametri estrattore di essere disaccoppiati l'uno dall'altro, ad es. http://daily-scala.blogspot.com/2009/11/overloaded-unapply.html - in questo sta vivendo il suo obiettivo di supportare sia la programmazione orientata agli oggetti sia quella funzionale. (Naturalmente, i linguaggi orientati agli oggetti consentono di disaccoppiare i campi memorizzati ei parametri del costruttore, anche se normalmente non dispongono di estrattori.)
Esistono altri linguaggi che presentano la corrispondenza dei motivi e consentono tale disaccoppiamento?
È stato scritto qualcosa sui pro e contro di tale disaccoppiamento?
Haskell è un linguaggio famiglia ML? – millimoose
Non li abbiamo mai usati, ma le viste di Haskell sono simili – Owen
E, naturalmente, linguaggi dinamici come Scheme permettono questo senza supporto linguistico, ma non so se qualcuno ne faccia uso – Owen