Vi presenterar ett nytt utländskt funktionsgränssnitt för SML/NJ. Den bygger på idén om datanivå interoperabilitet-förmågan hos ML-program för att inspektera samt manipulera C-datastrukturer direkt. Kärnkomponenten i detta arbete är en kodning av det nästan 2 kompletta C-systemet i ML-typer. Kodningen gör omfattande användning av en "folklore" skriva trick, dra nytta av ML: s polymorphism, dess typ konstruktörer, dess abstraktionsmekanismer, och även functors. En liten lågnivåkomponent som behandlar C-struktur- och fackföreningsdeklarationer samt programlänkning döljs från programmerarens öga av ett enkelt program-generatorverktyg som översätter C-deklarationer till motsvarande ML-limkod.
Vår användning av HOL-typer liknar användningen av Blumes REF-kodning av C-typsystemet i ML som använder fantomtypning för att uttrycka pekartyper och operatörer i syfte att skapa ett gränssnitt med utländsk funktion.
No-longer-foreign: Teaching an ML compiler to speak C “natively
{'venue': 'Electronic Notes in Theoretical Computer Science', 'journal': None, 'mag_field_of_study': ['Computer Science']}