Ett Hindley-Milner-system som ML:s verkar förbjuda typindexerade värden, dvs. funktioner som kartlägger en typfamilj till en värdefamilj. Sådana funktioner utför i allmänhet fallanalys av indatatyper och returvärden för eventuellt olika typer. Målet med vårt arbete är att visa hur man programmerar med typindexerade värden inom ett Hindley-Milner-system. Vår första metod är att tolka en inmatningstyp som dess motsvarande värde, rekursivt. Denna lösning är typsäker, i den meningen att ML-systemet statiskt förhindrar eventuell obalans mellan inmatningstyp och funktionsargument som beror på denna typ. Sådana specifika typtolkningar hindrar oss dock från att kombinera olika typindexerade värden som delar samma typ. För att möta denna invändning fokuserar vi på att hitta en värdeoberoende typkodning som kan delas av olika funktioner. Vi föreslår och jämför två lösningar. En kräver förstklassig och högre ordning polymorfism, och är därför inte genomförbar i kärnspråket av ML, men det kan programmeras med hjälp av högre ordning functors i Standard ML i New Jersey. Dess användning är dock klumpig. I den andra metoden används inbäddnings-/projektionsfunktioner. Det verkar vara mer praktiskt. Vi demonstrerar nyttan av typindexerade värden genom exempel inklusive typriktad partiell utvärdering, C printf-liknande formatering, och subtyper tvång. Slutligen diskuterar vi kompromisserna mellan vårt tillvägagångssätt och några andra lösningar som bygger på mer uttrycksfulla skrivdiscipliner.
Yang Ref presenterar vissa metoder för att möjliggöra typsäker programmering av typindexerade värden i ML som liknar termnivåanalys av typer.
Encoding types in ML-like languages
{'venue': 'Theor. Comput. Sci.', 'journal': None, 'mag_field_of_study': ['Computer Science']}