2180:
1861:
228:
2228:
2218:
2208:
2047:
2037:
2027:
36:
416:
A functional program is a set of functions defined by equations or rules. A functional computation consists of replacing subexpressions by equal (with regard to the function definitions) subexpressions until no more replacements (or reductions) are possible and a value or normal form is obtained. For
821:
to a value selected from among alternatives imposed by constraints. Each possible value is tried in some order, with the remainder of the program invoked in each case to determine the validity of the binding. Narrowing is an extension of logic programming, in that it performs a similar search, but
734:
Based on this specification, one can define a function that satisfies this specification by employing logic programming features. Similarly to logic languages, functional logic languages provide search for solutions for existentially quantified variables. In contrast to pure logic languages, they
808:
r is applicable for reduction if its condition c has been solved. In contrast to purely functional languages where conditions are only evaluated to a
Boolean value, functional logic languages support the solving of conditions by guessing values for the unknowns in the condition. Narrowing as
796:” is used for equational constraints in order to provide a syntactic distinction from defining equations. Similarly, extra variables (i.e., variables not occurring in the left-hand side of the defining equation) are explicitly declared by “
904:
Since Curry is able to solve equations containing function calls with unknown values, its execution mechanism is based on non-deterministic computations, similarly to logic programming. This mechanism supports also the definition of
836:, is optimal in the sense of doing a number of reductions to get to a "normal form" corresponding to a solution that is minimal among sound and complete strategies. Needed narrowing corresponds to a lazy strategy, in contrast to the
719:” is also useful to specify the behavior of other functions on lists. For instance, the behavior of a function last that yields the last element of a list can be specified as follows: for all lists xs and elements e,
1081:
with non-deterministic search strategies. In contrast to Prolog, which uses backtracking to search for solutions, Curry does not fix a particular search strategy. Hence, there are implementations of Curry, like
630:
are written as . We can define operations on recursive types by inductive definitions where pattern matching supports the convenient separation of the different cases. For instance, the concatenation operation
403:
It is nearly a superset of
Haskell but does not support all language extensions of Haskell. In contrast to Haskell, Curry has built-in support for non-deterministic computations involving search.
896:. Functional patterns are enabled by the combined functional and logic features of Curry and support concise definitions of tasks requiring deep pattern matching in hierarchical data structures.
825:
Narrowing is useful because it allows a function to be treated as a relation: its value can be computed "in both directions". The Curry examples of the previous section illustrate this.
2284:
2269:
2279:
2222:
1428:
1073:
Due to the absence of side effects, a functional logic program can be executed with different strategies. To evaluate expressions, Curry uses a variant of the
2274:
2041:
2264:
909:, i.e., operations that delivers more than one result for a given input. The archetype of non-deterministic operations is the predefined infix operation
2259:
2254:
2299:
2294:
2084:
19:
This article is about the programming language Curry (named in honour of a mathematician and logician). For the mathematician and logician, see
174:
1399:(Braßel, Fischer, Hanus, Reck, 2010) on modeling lazy non-deterministic (logic) programming (like in Curry) in a purely functional language (
1301:
1268:
2212:
828:
As noted in the prior section, narrowing can be thought of as reduction on a program term graph, and there are often many different ways (
100:
1455:
329:
72:
1403:); such approach might give the programmer more flexibility in the control over the strategies that—in the case of Curry—are built-in.
1925:
119:
57:
50:
79:
1970:
1945:
186:
2122:
515:
Functions on
Booleans can be defined by pattern matching, i.e., by providing several equations for different argument values:
546:
The principle of replacing equals by equals is still valid provided that the actual arguments have the required form, e.g.:
468:
190:
935:. Computing with non-deterministic operations and computing with free variables by narrowing has the same expressive power.
86:
2289:
1955:
1777:
1587:
1619:
1572:
1494:
1414:
389:
1421:
68:
2232:
1915:
1627:
1565:
1534:
942:
show an important feature of Curry: all rules are tried in order to evaluate some operation. Hence, one can define by
460:
219:
1995:
1558:
639:” takes two lists as input and produces an output list, where all list elements are of the same unspecified type):
447:, etc. In a similar way, one can evaluate nested expressions (where the subexpressions to be replaced are quoted):
635:” on polymorphic lists can be defined as follows (the optional type declaration in the first line specifies that “
46:
2077:
2051:
1608:
1372:
182:
2179:
2026:
1860:
1839:
1814:
1479:
1345:
888:
Haskell does not allow such a declaration since the pattern in the left-hand side contains a defined function (
464:
348:
800:” in order to provide some opportunities to detect bugs caused by typos. A conditional equation of the form l
178:
1751:
1284:
Sergio, Antoy; Hanus, Michael (2006). "Overlapping Rules and Logic
Variables in Functional Logic Programs".
385:
278:
560:. For instance, a list of elements, where the type of elements is arbitrary (denoted by the type variable
467:: the value of a computed result does not depend on the order or time of evaluation, due to the absence of
2070:
856:
shown above expresses the fact that the actual argument must match the result of narrowing the expression
397:
250:
143:
482:
by enumerating their constructors. For instance, the type of
Boolean values consists of the constructors
1885:
1763:
1378:
93:
832:) to reduce a given term graph. Antoy et al. proved in the 1990s that a particular narrowing strategy,
453:
There is also another order of evaluation if we replace the arguments of operators from right to left:
2201:
2142:
2110:
2020:
1757:
1091:
138:
1655:
1522:
1473:
1395:
822:
can actually generate values as part of the search rather than just being limited to testing them.
557:
479:
227:
1389:
1975:
1920:
1875:
1801:
1540:
1499:
1233:
1183:
1165:
1087:
1009:
an operation to insert an element into a list at an indeterminate position so that the operation
261:
165:
2132:
1297:
1264:
1225:
917:
operator, that returns one of its arguments. This operator is defined by the following rules:
306:
147:
1935:
1713:
1696:
1664:
1485:
1460:
1289:
1256:
1217:
1157:
289:
273:
1950:
1702:
1688:
1671:
1595:
1111:
1078:
170:
155:
1251:
Sergio, Antoy; Hanus, Michael (2006). "Declarative
Programming with Function Patterns".
1930:
1821:
1332:- A web-based execution environment for Curry and Haskell with various example programs
837:
735:
support equation solving over nested functional expressions so that an equation like ys
553:
254:
1208:
Sergio, Antoy; Echahed, Rachid; Hanus, Michael (2007). "A Needed
Narrowing Strategy".
2248:
2093:
2000:
1965:
1902:
1743:
1636:
246:
20:
1237:
1169:
1980:
1960:
818:
294:
1368:
2105:
1990:
1602:
463:. This follows from a fundamental property of pure functional languages, termed
241:
35:
2031:
1940:
1677:
1359:
1083:
471:. This simplifies reasoning about, and maintaining, pure functional programs.
352:
1229:
1846:
1795:
1726:
1350:
1161:
459:
In this case, both derivations lead to the same result, a property known as
396:
language. It merges elements of functional and logic programming, including
336:
1221:
860:. Curry can express this property also in the following more concise way:
2151:
2127:
2101:
1985:
1633:
1579:
1446:
24:
1383:
809:
discussed in the next section is used to solve this kind of conditions.
2164:
1721:
1546:
1437:
1400:
1396:
Transforming
Functional Logic Programs into Monadic Functional Programs
1363:
1329:
1293:
1260:
475:
393:
369:
356:
1406:
1341:
1288:. Lecture Notes in Computer Science. Vol. 4079. pp. 87–101.
1148:
Sergio, Antoy; Hanus, Michael (2010). "Functional Logic
Programming".
344:
1894:
1832:
1827:
1789:
1732:
1354:
841:
715:
Beyond its application for various programming tasks, the operation “
373:
340:
266:
1255:. Lecture Notes in Computer Science. Vol. 3901. pp. 6–22.
1807:
1783:
282:
739:= is solved by instantiating ys to the list and e to the value
2062:
2066:
1410:
1510:
1335:
29:
1134:
1322:
1086:, where the user can easily select a search strategy, like
743:. In Curry one can define the operation last as follows:
456:'double (1+2)' → (1+2)+'(1+2)' → '(1+2)'+3 → '3+3' → 6
450:'double (1+2)' → '(1+2)'+(1+2) → 3+'(1+2)' → '3+3' → 6
439:” to be defined by an infinite set of equations, e.g.,
564:), is either the empty list “” or the non-empty list “
1135:"Curry: A Truly Integrated Functional Logic Language"
1390:
Purely
Functional Lazy Non-deterministic Programming
2141:
2100:
1893:
1884:
1868:
1742:
1712:
1687:
1654:
1618:
1521:
1454:
1445:
363:
327:
301:
288:
272:
260:
240:
218:
196:
164:
154:
137:
417:instance, consider the function double defined by
1253:Logic Based Program Synthesis and Transformation
1112:"Current release:PAKCS Version 3.6.0 (10/11/23)"
1065:returns any permutation of a given input list.
817:Narrowing is a mechanism whereby a variable is
2078:
1422:
1338:- A collection of software packages for Curry
8:
614:” is usually written as and finite lists x1
132:
1094:, iterative deepening, or parallel search.
407:Foundations of functional logic programming
2115:
2085:
2071:
2063:
1890:
1527:
1466:
1451:
1429:
1415:
1407:
226:
131:
23:. For the computer science technique, see
1184:"Curry experimental programming language"
120:Learn how and when to remove this message
1103:
923:Thus, the evaluation of the expression
549:not '(not False)' → 'not True' → False
2285:Nondeterministic programming languages
2270:Functional logic programming languages
1353:A major Curry implementation, targets
1344:- The Münster Curry Compiler, targets
175:Ludwig Maximilian University of Munich
56:Please improve this article by adding
2280:Programming languages created in 1995
478:do, Curry supports the definition of
7:
2275:Haskell programming language family
1375:, and supports fair parallel search
388:language, an implementation of the
160:Michael Hanus, Sergio Antoy, et al.
2265:Experimental programming languages
2213:Category:Mathematical philosophers
474:As many functional languages like
14:
1393:(Fischer, Kiselyov, Shan, 2009),
892:). Such a pattern is also called
69:"Curry" programming language
2260:Concurrent programming languages
2255:High-level programming languages
2227:
2226:
2217:
2216:
2207:
2206:
2178:
2046:
2045:
2036:
2035:
2025:
1859:
1371:A Curry implementation, targets
1362:A Curry implementation, targets
568:” consisting of a first element
431:. The latter can be replaced by
187:Complutense University of Madrid
34:
920:x ? y = x x ? y = y
2300:Software using the BSD license
2295:Academic programming languages
490:that are declared as follows:
435:if we interpret the operator “
191:Technical University of Madrid
1:
58:secondary or tertiary sources
907:non-deterministic operations
390:functional logic programming
2123:Curry–Howard correspondence
392:paradigm, and based on the
202:; 29 years ago
2316:
18:
2187:
2176:
2118:
2009:
1857:
1773:
1530:
1469:
1384:Michael Hanus's home page
1150:Communications of the ACM
368:
335:
236:
214:
183:Portland State University
1480:Glasgow Haskell Compiler
1077:strategy which combines
1015:
944:
862:
745:
641:
578:
517:
492:
465:referential transparency
2223:Category:Mathematicians
1162:10.1145/1721654.1721675
386:declarative programming
1133:Hanus, Michael (ed.).
398:constraint programming
45:relies excessively on
2143:Programming languages
1506:York Haskell Compiler
1222:10.1145/347476.347484
179:University of Münster
150:, non-strict, modular
2290:Literate programming
2202:Open-source software
2111:computer programming
2021:Open-source software
1092:breadth-first search
558:recursive data types
480:algebraic data types
231:/ (10 November 2023)
16:Programming language
1216:(4). ACM: 776–822.
938:The rules defining
848:Functional patterns
556:can be obtained by
197:First appeared
134:
2233:Category:Logicians
1976:Simon Peyton Jones
1921:Lennart Augustsson
1876:Real World Haskell
1541:Concurrent Haskell
1379:Curry Mailing List
1294:10.1007/11799573_9
1261:10.1007/11680093_2
1210:Journal of the ACM
1114:. 10 November 2023
1088:depth-first search
894:functional pattern
852:The rule defining
792:Here, the symbol “
2242:
2241:
2174:
2173:
2060:
2059:
2052:Category:Software
1911:
1910:
1855:
1854:
1714:Windowing systems
1650:
1649:
1646:
1645:
1620:Electronic design
1303:978-3-540-36635-5
1286:Logic Programming
1270:978-3-540-32654-0
1156:(4). ACM: 74–85.
427:” is replaced by
379:
378:
242:Typing discipline
130:
129:
122:
104:
2307:
2230:
2229:
2220:
2219:
2210:
2209:
2182:
2116:
2087:
2080:
2073:
2064:
2049:
2048:
2039:
2038:
2029:
1936:Andrew D. Gordon
1891:
1863:
1689:Package managers
1665:Haskell Platform
1528:
1486:Template Haskell
1467:
1452:
1431:
1424:
1417:
1408:
1326:
1325:
1323:Official website
1308:
1307:
1281:
1275:
1274:
1248:
1242:
1241:
1205:
1199:
1198:
1196:
1194:
1180:
1174:
1173:
1145:
1139:
1138:
1130:
1124:
1123:
1121:
1119:
1108:
1090:(backtracking),
1075:needed narrowing
1061:
1058:
1055:
1052:
1049:
1046:
1043:
1040:
1037:
1034:
1031:
1028:
1025:
1022:
1019:
1012:
1005:
1002:
999:
996:
993:
990:
987:
984:
981:
978:
975:
972:
969:
966:
963:
960:
957:
954:
951:
948:
941:
934:
930:
926:
912:
891:
884:
881:
878:
875:
872:
869:
866:
859:
855:
834:needed narrowing
807:
803:
799:
795:
788:
785:
782:
779:
776:
773:
770:
767:
764:
761:
758:
755:
752:
749:
742:
738:
730:
726:
722:
718:
711:
708:
705:
702:
699:
696:
693:
690:
687:
684:
681:
678:
675:
672:
669:
666:
663:
660:
657:
654:
651:
648:
645:
638:
634:
629:
625:
621:
617:
613:
606:
603:
600:
597:
594:
591:
588:
585:
582:
575:
571:
567:
563:
542:
539:
536:
533:
530:
527:
524:
521:
511:
508:
505:
502:
499:
496:
489:
485:
446:
442:
438:
434:
430:
426:
423:The expression “
323:
320:
318:
316:
314:
312:
310:
308:
230:
210:
208:
203:
156:Designed by
135:
125:
118:
114:
111:
105:
103:
62:
38:
30:
2315:
2314:
2310:
2309:
2308:
2306:
2305:
2304:
2245:
2244:
2243:
2238:
2205:
2183:
2170:
2137:
2133:Curry's paradox
2109:
2096:
2091:
2061:
2056:
2042:Category:Family
2024:
2005:
1956:John MacFarlane
1951:John Launchbury
1907:
1880:
1864:
1851:
1769:
1738:
1708:
1683:
1642:
1614:
1517:
1474:Generic Haskell
1458:
1456:Implementations
1441:
1435:
1321:
1320:
1317:
1312:
1311:
1304:
1283:
1282:
1278:
1271:
1250:
1249:
1245:
1207:
1206:
1202:
1192:
1190:
1182:
1181:
1177:
1147:
1146:
1142:
1132:
1131:
1127:
1117:
1115:
1110:
1109:
1105:
1100:
1079:lazy evaluation
1071:
1063:
1062:
1059:
1056:
1053:
1050:
1047:
1044:
1041:
1038:
1035:
1032:
1029:
1026:
1023:
1020:
1017:
1010:
1007:
1006:
1003:
1000:
997:
994:
991:
988:
985:
982:
979:
976:
973:
970:
967:
964:
961:
958:
955:
952:
949:
946:
939:
932:
928:
924:
921:
910:
902:
900:Non-determinism
889:
886:
885:
882:
879:
876:
873:
870:
867:
864:
857:
853:
850:
815:
805:
801:
797:
793:
790:
789:
786:
783:
780:
777:
774:
771:
768:
765:
762:
759:
756:
753:
750:
747:
740:
736:
728:
724:
720:
716:
713:
712:
709:
706:
703:
700:
697:
694:
691:
688:
685:
682:
679:
676:
673:
670:
667:
664:
661:
658:
655:
652:
649:
646:
643:
636:
632:
627:
623:
619:
615:
611:
608:
607:
604:
601:
598:
595:
592:
589:
586:
583:
580:
573:
569:
565:
561:
554:data structures
550:
544:
543:
540:
537:
534:
531:
528:
525:
522:
519:
513:
512:
509:
506:
503:
500:
497:
494:
487:
483:
457:
451:
444:
440:
436:
432:
428:
424:
421:
420:double x = x+x
414:
409:
330:implementations
305:
232:
206:
204:
201:
189:
185:
181:
177:
173:
171:Kiel University
126:
115:
109:
106:
63:
61:
55:
51:primary sources
39:
28:
17:
12:
11:
5:
2313:
2311:
2303:
2302:
2297:
2292:
2287:
2282:
2277:
2272:
2267:
2262:
2257:
2247:
2246:
2240:
2239:
2237:
2236:
2197:
2195:= discontinued
2188:
2185:
2184:
2177:
2175:
2172:
2171:
2169:
2168:
2162:
2156:
2147:
2145:
2139:
2138:
2136:
2135:
2130:
2125:
2119:
2113:
2098:
2097:
2092:
2090:
2089:
2082:
2075:
2067:
2058:
2057:
2055:
2015:= discontinued
2010:
2007:
2006:
2004:
2003:
1998:
1996:Simon Thompson
1993:
1988:
1983:
1978:
1973:
1968:
1963:
1958:
1953:
1948:
1943:
1938:
1933:
1931:Jeremy Gibbons
1928:
1923:
1918:
1912:
1909:
1908:
1906:
1905:
1899:
1897:
1888:
1882:
1881:
1879:
1878:
1872:
1870:
1866:
1865:
1858:
1856:
1853:
1852:
1850:
1849:
1844:
1836:
1830:
1825:
1822:Liquid Haskell
1819:
1811:
1805:
1799:
1793:
1787:
1781:
1774:
1771:
1770:
1768:
1767:
1761:
1755:
1748:
1746:
1744:Web frameworks
1740:
1739:
1737:
1736:
1730:
1724:
1718:
1716:
1710:
1709:
1707:
1706:
1700:
1693:
1691:
1685:
1684:
1682:
1681:
1675:
1669:
1660:
1658:
1652:
1651:
1648:
1647:
1644:
1643:
1641:
1640:
1631:
1624:
1622:
1616:
1615:
1613:
1612:
1606:
1600:
1592:
1584:
1576:
1570:
1562:
1556:
1550:
1544:
1538:
1531:
1525:
1519:
1518:
1516:
1515:
1503:
1491:
1490:
1489:
1477:
1470:
1464:
1449:
1443:
1442:
1436:
1434:
1433:
1426:
1419:
1411:
1405:
1404:
1386:
1381:
1376:
1366:
1357:
1348:
1339:
1336:Curry packages
1333:
1327:
1316:
1315:External links
1313:
1310:
1309:
1302:
1276:
1269:
1243:
1200:
1175:
1140:
1125:
1102:
1101:
1099:
1096:
1070:
1067:
1016:
945:
919:
901:
898:
863:
849:
846:
838:SLD-resolution
814:
811:
746:
642:
579:
548:
518:
493:
455:
449:
419:
413:
412:Basic concepts
410:
408:
405:
377:
376:
366:
365:
361:
360:
333:
332:
325:
324:
303:
299:
298:
292:
286:
285:
279:Cross-platform
276:
270:
269:
264:
258:
257:
244:
238:
237:
234:
233:
224:
222:
220:Stable release
216:
215:
212:
211:
198:
194:
193:
168:
162:
161:
158:
152:
151:
141:
128:
127:
42:
40:
33:
15:
13:
10:
9:
6:
4:
3:
2:
2312:
2301:
2298:
2296:
2293:
2291:
2288:
2286:
2283:
2281:
2278:
2276:
2273:
2271:
2268:
2266:
2263:
2261:
2258:
2256:
2253:
2252:
2250:
2235:
2234:
2225:
2224:
2215:
2214:
2204:
2203:
2198:
2196:
2193:
2190:
2189:
2186:
2181:
2166:
2163:
2160:
2157:
2154:
2153:
2149:
2148:
2146:
2144:
2140:
2134:
2131:
2129:
2126:
2124:
2121:
2120:
2117:
2114:
2112:
2107:
2103:
2099:
2095:
2094:Haskell Curry
2088:
2083:
2081:
2076:
2074:
2069:
2068:
2065:
2054:
2053:
2044:
2043:
2034:
2033:
2028:
2023:
2022:
2017:
2016:
2013:
2008:
2002:
2001:Philip Wadler
1999:
1997:
1994:
1992:
1989:
1987:
1984:
1982:
1979:
1977:
1974:
1972:
1969:
1967:
1966:Conor McBride
1964:
1962:
1959:
1957:
1954:
1952:
1949:
1947:
1944:
1942:
1939:
1937:
1934:
1932:
1929:
1927:
1924:
1922:
1919:
1917:
1914:
1913:
1904:
1903:Haskell Curry
1901:
1900:
1898:
1896:
1892:
1889:
1887:
1883:
1877:
1874:
1873:
1871:
1867:
1862:
1848:
1845:
1842:
1841:
1837:
1834:
1831:
1829:
1826:
1823:
1820:
1817:
1816:
1812:
1809:
1806:
1803:
1800:
1797:
1794:
1791:
1788:
1785:
1782:
1779:
1776:
1775:
1772:
1765:
1762:
1759:
1756:
1753:
1750:
1749:
1747:
1745:
1741:
1734:
1731:
1728:
1725:
1723:
1720:
1719:
1717:
1715:
1711:
1704:
1701:
1698:
1695:
1694:
1692:
1690:
1686:
1679:
1676:
1673:
1670:
1667:
1666:
1662:
1661:
1659:
1657:
1653:
1638:
1637:SystemVerilog
1635:
1632:
1629:
1626:
1625:
1623:
1621:
1617:
1610:
1607:
1604:
1601:
1598:
1597:
1593:
1590:
1589:
1585:
1582:
1581:
1577:
1574:
1571:
1568:
1567:
1563:
1560:
1557:
1554:
1551:
1548:
1545:
1542:
1539:
1536:
1533:
1532:
1529:
1526:
1524:
1520:
1513:
1512:
1507:
1504:
1501:
1497:
1496:
1492:
1487:
1484:
1483:
1481:
1478:
1475:
1472:
1471:
1468:
1465:
1462:
1457:
1453:
1450:
1448:
1444:
1439:
1432:
1427:
1425:
1420:
1418:
1413:
1412:
1409:
1402:
1398:
1397:
1392:
1391:
1387:
1385:
1382:
1380:
1377:
1374:
1370:
1367:
1365:
1361:
1358:
1356:
1352:
1349:
1347:
1343:
1340:
1337:
1334:
1331:
1328:
1324:
1319:
1318:
1314:
1305:
1299:
1295:
1291:
1287:
1280:
1277:
1272:
1266:
1262:
1258:
1254:
1247:
1244:
1239:
1235:
1231:
1227:
1223:
1219:
1215:
1211:
1204:
1201:
1189:
1185:
1179:
1176:
1171:
1167:
1163:
1159:
1155:
1151:
1144:
1141:
1136:
1129:
1126:
1113:
1107:
1104:
1097:
1095:
1093:
1089:
1085:
1080:
1076:
1068:
1066:
1014:
943:
936:
918:
916:
908:
899:
897:
895:
861:
847:
845:
843:
839:
835:
831:
826:
823:
820:
812:
810:
744:
732:
723:xs = e if ∃ys
640:
577:
559:
555:
552:More complex
547:
516:
491:
481:
477:
472:
470:
466:
462:
454:
448:
418:
411:
406:
404:
401:
400:integration.
399:
395:
391:
387:
383:
375:
371:
367:
364:Influenced by
362:
358:
354:
350:
346:
342:
338:
334:
331:
326:
322:
304:
300:
296:
293:
291:
287:
284:
280:
277:
275:
271:
268:
265:
263:
259:
256:
252:
248:
245:
243:
239:
235:
229:
223:
221:
217:
213:
199:
195:
192:
188:
184:
180:
176:
172:
169:
167:
163:
159:
157:
153:
149:
145:
142:
140:
136:
124:
121:
113:
102:
99:
95:
92:
88:
85:
81:
78:
74:
71: –
70:
66:
65:Find sources:
59:
53:
52:
48:
43:This article
41:
37:
32:
31:
26:
22:
21:Haskell Curry
2231:
2221:
2211:
2199:
2194:
2191:
2158:
2150:
2050:
2040:
2030:
2018:
2014:
2011:
1981:David Roundy
1961:Simon Marlow
1926:Richard Bird
1838:
1813:
1663:
1594:
1586:
1578:
1564:
1552:
1509:
1505:
1493:
1394:
1388:
1285:
1279:
1252:
1246:
1213:
1209:
1203:
1191:. Retrieved
1187:
1178:
1153:
1149:
1143:
1128:
1116:. Retrieved
1106:
1074:
1072:
1064:
1008:
937:
922:
914:
906:
903:
893:
887:
851:
840:strategy of
833:
829:
827:
824:
816:
798:where...free
791:
733:
714:
609:
551:
545:
514:
473:
469:side effects
458:
452:
422:
415:
402:
381:
380:
116:
107:
97:
90:
83:
76:
64:
44:
2106:mathematics
1991:Audrey Tang
1971:Erik Meijer
1946:John Hughes
1603:TidalCycles
1440:programming
1193:2 September
1118:14 November
1013:defined by
931:as well as
572:and a list
319:/curry-lang
313:.informatik
225:3.6.0
2249:Categories
1941:Paul Hudak
1678:QuickCheck
1098:References
1069:Strategies
925:0 ? 1
830:strategies
610:The type “
461:confluence
144:functional
80:newspapers
47:references
2102:Namesakes
1886:Community
1847:SQream DB
1796:git-annex
1727:wxHaskell
1656:Libraries
1230:0004-5411
913:, called
813:Narrowing
351:target),
343:target),
315:.uni-kiel
166:Developer
110:July 2019
2128:Currying
1986:Joe Stoy
1634:Bluespec
1523:Dialects
1461:features
1447:Software
1369:Curry2Go
1238:47275506
1188:MVPS.net
1170:14578759
927:returns
425:double 1
297:3-clause
262:Platform
255:inferred
139:Paradigm
25:Currying
2192:Italics
2165:Haskell
2012:Italics
1840:Paradox
1802:Haddock
1778:Cardano
1752:Servant
1722:Fudgets
1547:Cryptol
1438:Haskell
1401:Haskell
1364:Haskell
731:= xs.
476:Haskell
445:1+2 = 3
441:1+1 = 2
394:Haskell
370:Haskell
359:target)
357:Haskell
302:Website
290:License
205: (
94:scholar
1916:Arvind
1895:Eponym
1833:Pandoc
1828:LOLITA
1790:Ganeti
1733:xmonad
1672:Parsec
1588:Orwell
1355:Prolog
1300:
1267:
1236:
1228:
1168:
1045:insert
998:insert
968:insert
947:insert
915:choice
842:Prolog
612:List a
374:Prolog
341:Prolog
328:Major
309:.pages
267:x86-64
251:strong
247:static
96:
89:
82:
75:
67:
2159:Curry
2152:Brook
1815:House
1808:HaXml
1784:Darcs
1764:Yesod
1703:Stack
1697:Cabal
1639:(BSV)
1580:Ωmega
1573:Idris
1553:Curry
1495:Gofer
1360:KiCS2
1351:PAKCS
1234:S2CID
1166:S2CID
1084:KiCS2
819:bound
775:where
659:->
656:->
535:False
529:False
510:False
488:False
384:is a
382:Curry
353:KiCS2
337:PAKCS
307:curry
283:Linux
148:logic
133:Curry
101:JSTOR
87:books
2200:° =
2032:Book
2019:° =
1869:Book
1758:Snap
1628:Atom
1596:Pugs
1566:Hume
1535:Agda
1500:Hugs
1498:° →
1330:Smap
1298:ISBN
1265:ISBN
1226:ISSN
1195:2021
1120:2023
1054:perm
1024:perm
1018:perm
1011:perm
865:last
858:ys++
854:last
787:free
748:last
721:last
602:List
584:List
581:data
566:x:xs
541:True
523:True
504:True
498:Bool
495:data
486:and
484:True
321:.org
207:1995
200:1995
73:news
1559:Elm
1511:Yhc
1508:° (
1342:MCC
1290:doi
1257:doi
1218:doi
1158:doi
794:=:=
763:=:=
622:...
576::
532:not
520:not
429:1+1
345:mcc
317:.de
311:.ps
295:BSD
49:to
2251::
2104::
1609:Ur
1482:°
1373:Go
1296:.
1263:.
1232:.
1224:.
1214:47
1212:.
1186:.
1164:.
1154:53
1152:.
1057:xs
1036:xs
1004:ys
983:ys
965:ys
953:ys
890:++
874:++
871:ys
844:.
804:c
778:ys
766:xs
760:++
757:ys
751:xs
737:++
729:++
727:ys
717:++
710:ys
707:++
704:xs
692:ys
689:++
683:xs
671:ys
665:ys
662:++
653:::
647:++
637:++
633:++
626:xn
618:x2
574:xs
443:,
372:,
281::
274:OS
253:,
249:,
146:,
60:.
2167:°
2161:°
2155:°
2108:,
2086:e
2079:t
2072:v
1843:°
1835:°
1824:°
1818:°
1810:°
1804:°
1798:°
1792:°
1786:°
1780:°
1766:°
1760:°
1754:°
1735:°
1729:°
1705:°
1699:°
1680:°
1674:°
1668:°
1630:°
1611:°
1605:°
1599:°
1591:°
1583:°
1575:°
1569:°
1561:°
1555:°
1549:°
1543:°
1537:°
1514:)
1502:°
1488:°
1476:°
1463:)
1459:(
1430:e
1423:t
1416:v
1346:C
1306:.
1292::
1273:.
1259::
1240:.
1220::
1197:.
1172:.
1160::
1137:.
1122:.
1060:)
1051:(
1048:x
1042:=
1039:)
1033::
1030:x
1027:(
1021:=
1001:x
995::
992:y
989:=
986:)
980::
977:y
974:(
971:x
962::
959:x
956:=
950:x
940:?
933:1
929:0
911:?
883:e
880:=
877:)
868:(
806:=
802:|
784:e
781:,
772:e
769:=
754:|
741:3
725::
701::
698:x
695:=
686:)
680::
677:x
674:(
668:=
650:)
644:(
631:“
628::
624::
620::
616::
605:a
599::
596:a
593:|
590:=
587:a
570:x
562:a
538:=
526:=
507:|
501:=
437:+
433:2
355:(
349:C
347:(
339:(
209:)
123:)
117:(
112:)
108:(
98:·
91:·
84:·
77:·
54:.
27:.
Text is available under the Creative Commons Attribution-ShareAlike License. Additional terms may apply.