Knowledge

Alice (programming language)

Source 📝

1306: 1296: 1286: 1276: 29: 1156: 404:
type that represents a value being provided by an independent thread of execution. A thread that uses a future value will block on an attempt to access the value until the thread performing it has completed the computation. A related concept is also provided termed a
426:
strategy of Standard ML. While Haskell uses the lazy model by default, Alice uses an eager evaluation model by default, needing an explicit programming statement for a computation to evaluate lazily.
806: 411:, allowing a thread to provide a future value that it will compute to another thread. Future and promise typed variables are used to implement data-flow synchronizing. 332: 138: 398:
in a number of ways that distinguish it from its predecessor. Alice provides concurrency features as part of the base language through the use of a
1346: 1351: 46: 93: 1300: 463:
Alice's remote procedure calling depends on the virtual machine, because it may send code to be computed from one computer to another.
65: 1336: 471:
Alice extends Standard ML with several primitives for lazy evaluation and concurrency. For example, threads may be created using the
813: 72: 1331: 1290: 456:
Early versions of Alice ran on the Mozart Programming System (Oz) virtual machine (VM), allowing interfacing between Alice and
79: 1341: 324: 840: 619:, it blocks until the thread is done with the computation. To exploit parallelism one could even define fib as follows: 61: 112: 328: 154: 1118: 971: 879: 475: 367: 50: 891: 479: 213: 1011: 86: 1247: 1106: 957: 868: 1073: 987: 936: 873: 822: 710: 457: 429:
The Alice implementation from Saarland University uses the Simple Extensible Abstract Machine (SEAM)
371: 312: 308: 168: 1237: 438: 748: 1310: 977: 799: 264: 150: 39: 1112: 383: 336: 244: 158: 146: 142: 1164: 1092: 379: 375: 1275: 577:
will take a long time to compute. This computation can be performed in a separate thread by
16:
For the educational object-oriented programming system from Carnegie Mellon University, see
1269: 611: 407: 400: 339: 133: 8: 845: 734: 355: 343: 184: 1178: 179: 1232: 998: 450: 423: 271: 259: 17: 786: 1227: 1078: 430: 419: 363: 1242: 1184: 1086: 252: 1190: 347: 1325: 920: 434: 248: 1208: 1202: 1196: 1064: 948: 1280: 925: 904: 446: 395: 359: 276: 239: 172: 730: 779: 287: 1098: 1040: 28: 1214: 1005: 831: 442: 1144: 1058: 1028: 982: 791: 415: 351: 1124: 1052: 1016: 885: 1155: 1130: 1046: 930: 862: 1034: 1022: 854: 418:
functional language, Alice provides facilities to allow a
752: 787:
Multiple publications about Alice ML and its concepts
53:. Unsourced material may be challenged and removed. 342:designed by the Programming Systems Laboratory at 478:. Consider the naive algorithm for computing the 1323: 807: 422:strategy in programs, unlike the traditional 814: 800: 615:. When an operation requires the value of 113:Learn how and when to remove this message 1172: 1347:Functional logic programming languages 1324: 1352:Programming languages created in 2000 795: 51:adding citations to reliable sources 22: 13: 821: 14: 1363: 771: 62:"Alice" programming language 1337:High-level programming languages 1305: 1304: 1295: 1294: 1285: 1284: 1274: 1154: 27: 38:needs additional citations for 1332:ML programming language family 1119:Logic for Computable Functions 741: 723: 1: 716: 362:, augmented with support for 609:is now bound to a so-called 7: 1342:Logic programming languages 704: 389: 10: 1368: 466: 15: 1256: 1163: 1152: 1072: 997: 946: 937:Standard ML of New Jersey 903: 853: 839: 830: 749:"Programming Systems Lab" 711:Oz (programming language) 307: 302: 282: 270: 258: 238: 234: 219:1.4 / May 3, 2007 212: 208: 190: 178: 164: 132: 1238:Christine Paulin-Mohring 621: 579: 484: 439:just-in-time compilation 1311:Category:Software:OCaml 384:constraint programming 380:remote procedure calls 221:; 17 years ago 196:; 24 years ago 1301:Category:Family:OCaml 376:distributed computing 1270:Open-source software 564:For large values of 340:programming language 47:improve this article 735:Saarland University 344:Saarland University 191:First appeared 185:Saarland University 129: 1291:Category:Family:ML 1179:Lennart Augustsson 194:June 16, 2000 127: 1319: 1318: 1233:Steven G. Johnson 1223: 1222: 1140: 1139: 999:Programming tools 967: 966: 755:on 5 October 2006 480:Fibonacci numbers 318: 317: 240:Typing discipline 123: 122: 115: 97: 1359: 1308: 1307: 1298: 1297: 1288: 1287: 1278: 1170: 1169: 1158: 1079:proof assistants 851: 850: 837: 836: 816: 809: 802: 793: 792: 783: 782: 780:Official website 765: 764: 762: 760: 751:. Archived from 745: 739: 738: 727: 700: 697: 694: 691: 688: 685: 682: 679: 676: 673: 670: 667: 664: 661: 658: 655: 652: 649: 646: 643: 640: 637: 634: 631: 628: 625: 618: 608: 601: 598: 595: 592: 589: 586: 583: 576: 569: 560: 557: 554: 551: 548: 545: 542: 539: 536: 533: 530: 527: 524: 521: 518: 515: 512: 509: 506: 503: 500: 497: 494: 491: 488: 474: 451:x86 architecture 424:eager evaluation 298: 295: 293: 291: 289: 229: 227: 222: 204: 202: 197: 130: 126: 118: 111: 107: 104: 98: 96: 55: 31: 23: 18:Alice (software) 1367: 1366: 1362: 1361: 1360: 1358: 1357: 1356: 1322: 1321: 1320: 1315: 1273: 1252: 1228:Thierry Coquand 1219: 1159: 1150: 1136: 1077: 1074:Theorem provers 1068: 993: 963: 942: 899: 844: 841:Implementations 826: 820: 778: 777: 774: 769: 768: 758: 756: 747: 746: 742: 729: 728: 724: 719: 707: 702: 701: 698: 695: 692: 689: 686: 683: 680: 677: 674: 671: 668: 665: 662: 659: 656: 653: 650: 647: 644: 641: 638: 635: 632: 629: 626: 623: 616: 606: 603: 602: 599: 596: 593: 590: 587: 584: 581: 571: 565: 562: 561: 558: 555: 552: 549: 546: 543: 540: 537: 534: 531: 528: 525: 522: 519: 516: 513: 510: 507: 504: 501: 498: 495: 492: 489: 486: 472: 469: 437:, and features 431:virtual machine 420:lazy evaluation 392: 364:lazy evaluation 325:general-purpose 286: 230: 225: 223: 220: 200: 198: 195: 119: 108: 102: 99: 56: 54: 44: 32: 21: 12: 11: 5: 1365: 1355: 1354: 1349: 1344: 1339: 1334: 1317: 1316: 1314: 1265: 1263:= discontinued 1257: 1254: 1253: 1251: 1250: 1248:Simon Thompson 1245: 1243:Frank Pfenning 1240: 1235: 1230: 1224: 1221: 1220: 1218: 1212: 1206: 1200: 1194: 1188: 1185:Damien Doligez 1182: 1176: 1174: 1167: 1161: 1160: 1153: 1151: 1149: 1148: 1141: 1138: 1137: 1135: 1134: 1128: 1122: 1115: 1110: 1104: 1103: 1102: 1090: 1083: 1081: 1070: 1069: 1067: 1062: 1056: 1050: 1044: 1038: 1032: 1026: 1020: 1014: 1009: 1003: 1001: 995: 994: 992: 991: 985: 980: 975: 968: 965: 964: 962: 961: 954: 952: 944: 943: 941: 940: 934: 928: 923: 918: 909: 907: 901: 900: 898: 897: 896: 895: 889: 883: 877: 871: 859: 857: 848: 834: 828: 827: 819: 818: 811: 804: 796: 790: 789: 784: 773: 772:External links 770: 767: 766: 740: 721: 720: 718: 715: 714: 713: 706: 703: 622: 580: 485: 468: 465: 394:Alice extends 391: 388: 372:multithreading 333:multi-paradigm 316: 315: 305: 304: 300: 299: 284: 280: 279: 274: 268: 267: 265:Cross-platform 262: 256: 255: 242: 236: 235: 232: 231: 218: 216: 214:Stable release 210: 209: 206: 205: 192: 188: 187: 182: 176: 175: 166: 162: 161: 139:Multi-paradigm 136: 121: 120: 35: 33: 26: 9: 6: 4: 3: 2: 1364: 1353: 1350: 1348: 1345: 1343: 1340: 1338: 1335: 1333: 1330: 1329: 1327: 1313: 1312: 1303: 1302: 1293: 1292: 1283: 1282: 1277: 1272: 1271: 1266: 1264: 1261: 1258: 1255: 1249: 1246: 1244: 1241: 1239: 1236: 1234: 1231: 1229: 1226: 1225: 1216: 1213: 1211:(Extended ML) 1210: 1207: 1204: 1201: 1199:(Caml, OCaml) 1198: 1195: 1192: 1189: 1186: 1183: 1180: 1177: 1175: 1171: 1168: 1166: 1162: 1157: 1146: 1143: 1142: 1132: 1129: 1126: 1123: 1121: 1120: 1116: 1114: 1111: 1108: 1105: 1100: 1097: 1096: 1094: 1091: 1088: 1085: 1084: 1082: 1080: 1075: 1071: 1066: 1063: 1060: 1057: 1054: 1051: 1048: 1045: 1042: 1039: 1036: 1033: 1030: 1027: 1024: 1021: 1018: 1015: 1013: 1010: 1007: 1004: 1002: 1000: 996: 989: 986: 984: 981: 979: 976: 973: 970: 969: 959: 956: 955: 953: 951: 950: 945: 938: 935: 932: 929: 927: 924: 922: 921:Concurrent ML 919: 916: 915: 911: 910: 908: 906: 902: 893: 890: 887: 884: 881: 878: 875: 872: 870: 867: 866: 864: 861: 860: 858: 856: 852: 849: 847: 842: 838: 835: 833: 829: 824: 817: 812: 810: 805: 803: 798: 797: 794: 788: 785: 781: 776: 775: 754: 750: 744: 736: 732: 726: 722: 712: 709: 708: 620: 614: 613: 605:The variable 578: 575: 568: 483: 481: 477: 464: 461: 459: 454: 452: 448: 444: 440: 436: 435:free software 432: 427: 425: 421: 417: 412: 410: 409: 403: 402: 397: 387: 385: 381: 377: 373: 369: 365: 361: 357: 353: 349: 345: 341: 338: 334: 330: 326: 322: 314: 310: 306: 303:Influenced by 301: 297: 292:.uni-saarland 285: 281: 278: 275: 273: 269: 266: 263: 261: 257: 254: 250: 246: 243: 241: 237: 233: 217: 215: 211: 207: 193: 189: 186: 183: 181: 177: 174: 170: 167: 163: 160: 156: 152: 148: 144: 140: 137: 135: 131: 125: 117: 114: 106: 103:February 2011 95: 92: 88: 85: 81: 78: 74: 71: 67: 64: –  63: 59: 58:Find sources: 52: 48: 42: 41: 36:This article 34: 30: 25: 24: 19: 1309: 1299: 1289: 1279: 1267: 1262: 1259: 1209:Don Sannella 1203:Robin Milner 1197:Xavier Leroy 1117: 1065:SLAM project 949:Dependent ML 947: 913: 912: 757:. Retrieved 753:the original 743: 725: 610: 604: 573: 566: 563: 470: 462: 455: 428: 413: 406: 399: 393: 320: 319: 124: 109: 100: 90: 83: 76: 69: 57: 45:Please help 40:verification 37: 1191:Gérard Huet 926:Extended ML 905:Standard ML 825:programming 447:native code 396:Standard ML 368:concurrency 360:Standard ML 348:Saarbrücken 173:Standard ML 151:distributed 1326:Categories 939:° (SML/NJ) 717:References 354:. It is a 337:functional 329:high-level 226:2007-05-03 201:2000-06-16 159:constraint 155:concurrent 147:functional 143:imperative 73:newspapers 1181:(Lazy ML) 1173:Designers 1165:Community 1099:HOL Light 1041:Marionnet 414:Like the 180:Developer 134:Paradigms 1215:Don Syme 1107:Isabelle 1006:Alt-Ergo 846:dialects 832:Software 759:8 August 705:See also 449:for the 443:bytecode 433:. It is 390:Overview 321:Alice ML 253:inferred 1260:Italics 1187:(OCaml) 1145:GeneWeb 1059:Semgrep 1029:Frama-C 983:MacroML 978:Lazy ML 972:Futhark 731:"Alice" 476:keyword 467:Example 416:Haskell 408:promise 356:dialect 352:Germany 283:Website 272:License 224: ( 199: ( 87:scholar 1193:(Caml) 1125:Matita 1053:Poplog 1017:Camlp4 1012:Astrée 892:Reason 886:JoCaml 733:. DE: 612:future 460:code. 401:future 382:) and 296:/alice 249:static 245:strong 165:Family 89:  82:  75:  68:  60:  1131:Twelf 1047:MTASC 931:MLton 914:Alice 863:OCaml 666:spawn 591:spawn 473:spawn 323:is a 128:Alice 94:JSTOR 80:books 1281:Book 1268:° = 1217:(F#) 1205:(ML) 1113:LEGO 1035:Haxe 1023:FFTW 855:Caml 761:2006 572:fib 445:and 378:via 374:and 66:news 1093:HOL 1087:Coq 958:ATS 869:Eff 687:fib 669:fib 657:fib 642:fib 627:fib 624:fun 594:fib 582:val 547:fib 529:fib 520:fib 505:fib 490:fib 487:fun 441:to 358:of 294:.de 290:.ps 288:www 277:MIT 49:by 1328:: 1095:° 988:Ur 880:F# 874:F* 865:° 823:ML 699:); 693:n- 675:n- 570:, 559:); 553:n- 535:n- 482:: 458:Oz 453:. 386:. 366:, 350:, 346:, 335:, 331:, 327:, 313:Oz 311:, 309:ML 260:OS 251:, 247:, 171:: 169:ML 157:, 153:, 149:, 145:, 141:: 1147:° 1133:° 1127:° 1109:° 1101:° 1089:° 1076:, 1061:° 1055:° 1049:° 1043:° 1037:° 1031:° 1025:° 1019:° 1008:° 990:° 974:° 960:° 933:° 917:° 894:° 888:° 882:° 876:° 843:, 815:e 808:t 801:v 763:. 737:. 696:2 690:( 684:+ 681:) 678:1 672:( 663:= 660:n 654:| 651:1 648:= 645:1 639:| 636:0 633:= 630:0 617:x 607:x 600:; 597:n 588:= 585:x 574:n 567:n 556:2 550:( 544:+ 541:) 538:1 532:( 526:= 523:n 517:| 514:1 511:= 508:1 502:| 499:0 496:= 493:0 370:( 228:) 203:) 116:) 110:( 105:) 101:( 91:· 84:· 77:· 70:· 43:. 20:.

Index

Alice (software)

verification
improve this article
adding citations to reliable sources
"Alice" programming language
news
newspapers
books
scholar
JSTOR
Learn how and when to remove this message
Paradigms
Multi-paradigm
imperative
functional
distributed
concurrent
constraint
ML
Standard ML
Developer
Saarland University
Stable release
Typing discipline
strong
static
inferred
OS
Cross-platform

Text is available under the Creative Commons Attribution-ShareAlike License. Additional terms may apply.