Abstrakt. En robust programvarukomponent uppfyller ett kontrakt: den förväntar sig data som uppfyller en viss egenskap och lovar att returnera data som uppfyller en annan egenskap. Den objektorienterade gemenskapen använder design-by contract-metoden i stor utsträckning. På senare tid har det kommit förslag på språkförlängningar som lägger till kontrakt till funktionell programmering i högre ordning. I detta dokument föreslår vi ett inbäddat domänspecifikt språk för maskinskrivna, högre ordning och förstklassiga kontrakt, vilket både är mer uttrycksfullt än tidigare förslag, och möjliggör en mer informativ skuldtilldelning. Vi tar några första steg mot en algebra av kontrakt, och vi visar hur man definierar en generisk kontrakt kombinator för godtycklig algebraiska datatyper. Kontraktsspråket implementeras som bibliotek i Haskell med hjälp av begreppet generaliserade algebraiska datatyper.
Hinze m.fl. I REF infördes ett domänspecifikt språk för att definiera kontrakt i Haskell.
Typed contracts for functional programming
{'venue': 'In FLOPS ’06: Functional and Logic Programming: 8th International Symposium', 'journal': None, 'mag_field_of_study': ['Computer Science']}