Funktionell logisk programmering och probabilistisk programmering har visat på de stora fördelarna med att kombinera lathet (icke-strikt utvärdering med delning av resultaten) med icke-determinism. Men dessa fördelar utnyttjas sällan i funktionell programmering, eftersom de befintliga funktionerna för icke-strikthet, delning och icke-determinism i funktionella språk är svåra att kombinera. Vi presenterar ett praktiskt sätt att skriva rent funktionella lata icke-deterministiska program som är effektiva och iögonfallande. Vi uppnår detta mål genom att inbädda programmen i befintliga språk (som Haskell, SML och OCaml) med högkvalitativa implementeringar, genom att göra val lat och representera data med icke-deterministiska komponenter, genom att arbeta med anpassade monadiska datatyper och sökstrategier, och genom att tillhandahålla ekvationella lagar för programmeraren att resonera om deras kod.
En monad för rent funktionell lat icke-deterministisk programmering REF använder en liknande kombinatorandel för att göra monadiska (icke-deterministiska) beräkningar lata.
Purely functional lazy non-deterministic programming
{'venue': 'ICFP', 'journal': None, 'mag_field_of_study': ['Computer Science']}