name=M nameURL= see=MUMPS logo= type=D%20-%20Database%20or%20Text-processing desc=%22M%22%20is%20the%20newer%20name%20for%20MUMPS%2C%20a%0D%0Apowerful%20high-level%20language%20mostly%0D%0Aused%20for%20database%20and%20interactive%20MIS%0D%0Asystem%20development.%0D%0A%3Cbr%3E%0D%0AM%20is%20an%20ISO%20and%20ANSI%20standard%20language.%0D%0A origin= seealso= remark= links1= links2= links3= links4= links5= date=Last%20updated%2012%2F12%2F97 sample= _store=1 _add=MUMPS _usertab=1 _usersearch=0 _format=full = name=Magma nameURL=http%3A%2F%2Fwww.maths.usyd.edu.au%3A8000%2Fcomp%2Fmagma%2FOverview.html see= logo= type=M%20-%20Mathematical%20or%20Simulation desc=Magma%20is%20an%20environment%20and%20%0D%0Ahigh-level%20language%20for%0D%0Anumber%20theory%2C%20algebra%2C%20and%0D%0Ageneral%20mathematical%20programming.%0D%0A%3Cbr%3E%0D%0AThe%20fundamental%20features%20of%20Magma%20are%0D%0Aits%20procedural%20syntax%20and%20statement%0D%0Astructure%2C%20coupled%20with%20very%0D%0Asophisticated%20built-in%20data%20types%0D%0Aand%20operations.%20%20In%20general%2C%20Magma%0D%0Ais%20dynamically%20typed%20and%20performs%0D%0Aautomatic%20conversions%20rather%20than%20enforcing%0D%0Atype%20checking.%0D%0ASome%20of%20the%20%0D%0Abuilt-in%20types%20are%3A%20unlimited-precision%0D%0Aintegers%2C%20rational%20numbers%2C%20real%20and%0D%0Acomplex%20numbers%2C%20sets%2C%20%0D%0Aatoms%2C%20arrays%20of%20various%20sorts%2C%0D%0Agroups%20and%20fields%20of%20various%20sorts%2C%0D%0Aand%20various%20kinds%20of%20functional%20types.%0D%0ANewer%20versions%20of%20Magma%20support%20closures%0D%0Aand%20%0D%0Ahigher-order%20functions.%0D%0A%3Cbr%3E%0D%0AMagma%20has%20simple%20I%2FO%20facilities%0D%0Aused%20mainly%20for%20reading%20and%20writing%0D%0Amathematical%20objects%20to%20and%20from%20files.%0D%0A%3Cbr%3E%0D%0AThere%20is%20only%20one%20implementation%20of%20the%0D%0AMagma%20language.%20%20It%20is%20an%20interpreter%0D%0Awritten%20in%20C.%0D%0A%3Cbr%3E%0D%0AMagma%20runs%20on%20PCs%20and%20Unix%20systems.%0D%0AMagma%20was%20developed%20at%20the%20University%0D%0Aof%20Sydney%2C%20and%20used%20to%20be%20downloadable%0D%0Afree.%20%20Since%20about%201996%2C%20users%20have%20had%0D%0Ato%20pay%20for%20subscriptions%20to%20Magma.%0D%0ADocumentation%20is%20available%20with%20the%0D%0Adistributions. origin=J.%20Cannon%2C%20%3Ci%3Eet%20al%3C%2Fi%3E%2C%201993. seealso=Mathematica%2C%20Matlab%2C%20SETL%2C%20Pari remark=Magma%20evolved%20from%20an%20earlier%20system%0D%0Acalled%20Cayley.%20%20Both%20systems%20were%0D%0Aintended%20for%20use%20by%20serious%20mathematicians%0D%0Ausing%20computers%20to%20model%20and%20study%0D%0Amathematical%20concepts%20in%20detail.%20%20%0D%0AIt%20borrows%20basic%20ideas%20from%20OO%20programming%0D%0Alanguages%2C%20particularly%20abstract%20types%0D%0Aand%20type%20composition.%20%20In%20Magma%2C%20the%0D%0Afundamental%20classes%20based%20on%20modern%0D%0Anotions%20of%20algebra%20and%20category%20theory. links1=Magma%20Examples%20at%20U.%20of%20Sydney%3Dhttp%3A%2F%2Fwww.maths.usyd.edu.au%3A8000%2Fcomp%2Fmagma%2Fnode50.html%23SECTION02000000000000000000 links2= links3= links4= links5= date=Last%20updated%201%2F10%2F98 sample=A%20Magma%20program%20to%20produce%20random%20selections%0D%0Aof%20strings%20from%20a%20simple%20grammar%2C%20by%20D.%20Taylor.%0D%0A%3Cul%3E%0D%0A%3Cpre%3E%0D%0Aproduce%20%3A%3D%20procedure%28%29%3B%0D%0A%20%20%20%20seq%20%3A%3D%20%5B%22S%22%5D%3B%0D%0A%20%20%20%20rhs%20%3A%3D%20%5B%22%28%22%2C%20%22S%22%2C%20%22%29%22%2C%20%22S%22%5D%3B%0D%0A%20%20%20%20i%20%3A%3D%201%3B%0D%0A%20%20%20%20repeat%0D%0A%20%20%20%20%20%20%20%20if%20Random%281%2C%2010%29%20gt%207%20then%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20Insert%28%7Eseq%2C%20i%2C%20i%2C%20rhs%29%3B%0D%0A%20%20%20%20%20%20%20%20else%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20Remove%28%7Eseq%2C%20i%29%3B%0D%0A%20%20%20%20%20%20%20%20end%20if%3B%0D%0A%20%20%20%20%20%20%20%20print%20%23seq%20gt%200%20select%20%26%2Aseq%20else%20%22eps%22%3B%0D%0A%20%20%20%20%20%20%20%20i%20%3A%3D%20Position%28seq%2C%20%22S%22%29%3B%0D%0A%20%20%20%20until%20i%20eq%200%3B%0D%0A%20%20%20%20print%20%22Length%3A%22%2C%20%23seq%3B%0D%0Aend%20procedure%0D%0A%3C%2Fpre%3E%0D%0A%3C%2Ful%3E%0D%0A _store=1 _add=Magma _usertab=1 _usersearch=0 _format=full = name=Mathematica nameURL=http%3A%2F%2Fwww.wolfram.com%2F see= logo= type=M%20-%20Mathematical%20or%20Simulation desc=Mathematica%20is%20a%20formidable%20commercial%0D%0Asystem%20for%20symbolic%20mathematics%20and%0D%0Agraphics.%20%20Most%20of%20the%20system%20is%20written%0D%0Ain%20the%20Mathematica%20language%2C%20a%20powerful%0D%0Ahybrid%20interpreted%20language%20for%20expressing%0D%0Amathematical%20formulae%20and%20procedures.%0D%0AThe%20end%20user%20also%20employs%20the%20Mathematica%0D%0Alanguage%20to%20perform%20describe%20the%20problems%0D%0Athey%20wish%20Mathematica%20to%20solve%20to%20computations%0D%0Athey%20want%20it%20to%20undertake.%0D%0A%3Cbr%3E%0D%0AThe%20language%20has%20a%20very%20broad%20complement%0D%0Aof%20features%3A%0D%0A%3Cul%3E%0D%0A%3Cli%3ERule-based%20semantics%20will%20pattern-matching%0D%0A%3Cli%3EVariety%20of%20data%20types%3A%20symbols%2C%20several%20%0D%0Akinds%20of%20numbers%2C%20lists%2C%20vectors%2C%20arrays%2C%0D%0Agraphics%20objects%2C%20strings%2C%20etc...%0D%0A%3Cli%3EFull%20set%20of%20procedural%20control-flow%20constructs%0D%0A%3Cli%3EFacilties%20for%20reflection%20and%20on-the-fly%0D%0Aconstruct%20of%20code%0D%0A%3C%2Ful%3E%0D%0AData%20elements%20in%20Mathematica%20are%0D%0Astrongly%20typed%2C%20but%20the%20language%20system%0D%0Aperforms%20many%20types%20of%20automatic%20%0D%0Aconversion%2C%20especially%20on%20numbers.%0D%0AAll%20numbers%20in%20Mathematica%20are%0D%0Aunlimited%20precision%3A%20integers%2C%20reals%2C%0D%0Arationals%2C%20and%20complex.%20%20Programmers%0D%0Acan%20also%20define%20their%20own%20data%20types%2C%0D%0Aafter%20a%20fashion.%0D%0A%3Ci%3E%5BNote%3A%20in%20a%20sense%2C%20Mathematica%20has%20only%0D%0Aone%20non-primitive%20data%20type%3A%20the%20%22basic%20form.%22%20%20All%0D%0Aaggregate%20data%20and%20symbolic%20expressions%20in%20Mathematica%20are%20internally%20stored%0D%0Aas%20a%20head%20and%20a%20body%2C%20where%20the%20head%20defines%20the%0D%0Adata%20type.%20%20Programmers%20can%20create%20their%0D%0Aown%20head%20types%2C%20and%20do%2C%20and%20in%20that%20sense%0D%0Athey%20are%20defining%20new%20data%20types.%5D%3C%2Fi%3E%0D%0A%3Cbr%3E%0D%0AFor%20many%20users%2C%20the%20power%20of%20the%20Mathematica%0D%0Asystem%20is%20its%20immense%20library%20of%20pre-defined%0D%0Afunctions.%20%20These%20functions%20fall%20into%0D%0Aseveral%20broad%20groups%2C%20some%20of%20which%20are%3A%20arithmetic%2C%20%0D%0Aalgebra%2C%20calculus%2C%20graphics%2C%20I%2FO%2C%20%0D%0Aprogramming%2C%20and%20the%20GUI%20interface.%0D%0A%3Cbr%3E%0D%0AAs%20an%20interpreter%2C%20Mathematica%20can%0D%0Aeasily%20import%20new%20functions%20and%0D%0Apackage%20dynamically.%20%20Several%20hundred%0D%0Asuch%20packages%20have%20been%20written%20for%0D%0Athe%20system%2C%20in%20academia%20and%20industry.%0D%0A%3Cbr%3E%0D%0AThere%20is%20only%20one%20Mathematica%2C%20now%20in%0D%0Aits%20third%20major%20release.%20%20The%20system%0D%0Ais%20available%20commercially%20for%20Windows%2C%0D%0AMacintosh%2C%20and%20most%20Unix%20platforms. origin=Stephen%20Wolfram%2C%201987. seealso=Macsyma%2C%20FORMAC%2C%20Reduce%2C%20Hope%2C%20Maple remark=Programming%20with%20Mathematica%20has%20all%20the%0D%0Aease%20and%20pleasure%20of%20using%0D%0Athe%20best%20interpreters.%20%20Availability%0D%0Aof%20procedural%2C%20functional%2C%20and%20rule-based%0D%0Aprogramming%20models%20allow%20the%20user%20to%0D%0Aexperiment%20and%20choose%20the%20most%20suitable%0D%0Astyle%20for%20their%20background%20and%20problem%0D%0Adomain.%20%20Of%20course%2C%20choice%20of%20style%20can%0D%0Ahave%20very%20serious%20implications%20for%0D%0Aperformance%20--%20the%20mathematical%20core%20is%0D%0Afar%20faster%20at%20performing%20some%20kinds%20of%0D%0Aoperations%20than%20others.%0D%0A%3Cbr%3E%0D%0ALike%20Hope%2C%20Mathematica%20allows%20the%0D%0Aprogrammer%20to%20set%20up%20very%20complex%0D%0Apattern%20matching%20rules%20to%20control%20how%0D%0Afunctions%20are%20applied%20during%20computation.%0D%0AThis%20capabilities%20is%20very%20powerful%3B%20%0D%0Ausers%20have%20coded%20up%20significant%20areas%20of%0D%0Amathematical%20research%20in%20the%20language.%0D%0A%3Cbr%3E%0D%0AThe%20rivalry%20between%20Mathematica%20and%20its%0D%0Aleading%20competitor%20Maple%20sometimes%20gets%0D%0Abitter.%20%20Both%20have%20their%20strengths%2C%20but%0D%0Ain%20the%20area%20of%20the%20programming%20language%2C%0D%0AMathematica%20is%20somewhat%20more%20powerful. links1=A%20Mathematica%20Tutorial%3Dhttp%3A%2F%2Fsaaz.lanl.gov%2Fmath%2FMath_Home.html links2=MathSource%20archive%3Dhttp%3A%2F%2Fwww.mathsource.com%2F links3= links4= links5= date=Last%20updated%203%2F11%2F98 sample=%3Cpre%3E%0D%0A%28%2A%20RandomWalk%20example%20from%20Maeder%2C%201990%20%2A%29%0D%0ARandomWalk%3A%3Ausage%20%3D%20%22RandomWalk%5Bn%5D%20plots%20a%20random%20walk%20of%20length%20n%22%0D%0A%0D%0ARandomWalk%5Bn_Integer%5D%20%3A%3D%20%0D%0A%20%20%20%20Block%5B%7Bloc%20%3D%20%7B0.0%2C%200.0%7D%2C%20dir%2C%20points%3D%20Table%5B0%2C%20%7Bn%2B1%7D%5D%2C%20range%20%3D%20N%5B%7B0%2C%202%20Pi%7D%5D%7D%2C%0D%0A%20%20%20%20%20%20points%5B%5B1%5D%5D%20%3D%20loc%3B%0D%0A%20%20%20%20%20%20Do%5B%0D%0A%20%20%20%20%20%20%20%20%20%20%20dir%20%3D%20Random%5BReal%2C%20range%5D%3B%0D%0A%20%20%20%20%20%20%20%20%20%20%20loc%20%2B%3D%20%7BCos%5Bdir%5D%2C%20Sin%5Bdir%5D%7D%3B%0D%0A%20%20%20%20%20%20%20%20%20%20%20points%5B%5Bi%5D%5D%20%3D%20loc%2C%20%0D%0A%20%20%20%20%20%20%20%20%20%7Bi%2C%202%2C%20n%2B1%7D%5D%3B%0D%0A%20%20%20%20%20%20Show%5B%20Graphics%5B%7BPoint%5B%7B0%2C0%7D%5D%2C%20Line%5Bpoints%5D%7D%5D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20Framed%20-%3E%20True%2C%20AspectRation%20-%3E%20Automatic%5D%0D%0A%20%20%5D%0D%0A%3C%2Fpre%3E _store=1 _add=Mathematica _usertab=1 _usersearch=0 _format=full = name=Mawl nameURL=http%3A%2F%2Fwww.bell-labs.com%2Fproject%2FMAWL%2F see=C logo=152x108%3Dhttp%3A%2F%2Fwww.bell-labs.com%2Fproject%2FMAWL%2Fpics%2Fmawl%2Fsmawl.gif type=C%20-%20Command%20or%20Scripting desc=Mawl%20is%20a%20compiled%20%0D%0Astructured%20scripting%20language%0D%0Adesigned%20for%20implementing%20interactive%0D%0Aon-line%20services.%20%20%0D%0A%3Cbr%3E%0D%0AThe%20syntax%20of%20Mawl%20is%20similar%20to%20that%20of%20C.%0D%0APrimitive%20data%20types%20in%20the%20language%0D%0Ainclude%20integers%2C%20reals%2C%20booleans%2C%20and%20%0D%0Astrings.%20%20For%20data%20aggregates%2C%20Mawl%0D%0Asupports%20vectors%20%28homogenous%29%20and%0D%0Atuples.%20%20All%20variables%20in%20Mawl%20are%20marked%0D%0Aas%20%27auto%27%20or%20%27static%27.%20%20The%20static%20variables%0D%0Aare%20persistent%2C%20holding%20their%20values%20from%0D%0Asession%20to%20session.%0D%0AMawl%20also%20supports%20conventional%0D%0Asequential%20control%20constructs%3A%20conditionals%0D%0Aand%20loops%2C%20but%20no%20goto.%20%20%0D%0A%3Cbr%3E%0D%0ABecause%20it%20is%20a%20special-purpose%20language%0D%0Adesigned%20for%20building%20interactive%20services%2C%0D%0AMawl%20programs%20do%20not%20have%20traditional%0D%0Asingle-entry-point%20subroutine%20structure.%0D%0AInstead%2C%20a%20Mawl%20program%20consists%20of%20one%20or%0D%0Amore%20invokable%20sessions%2C%20each%20of%20which%0D%0Acan%20have%20multiple%20steps%20of%20presenting%20output%0D%0Aand%20accepting%20input.%20%20A%20Mawl%20program%20can%0D%0Abe%20%27executing%27%20any%20number%20of%20sessions%0D%0Asimultaneously%2C%20using%20built-in%20automatic%0D%0Asynchronization.%0D%0A%3Cbr%3E%0D%0AThe%20fundamental%20data%20type%20for%20Mawl%27s%20%0D%0Ainteractive%20services%20is%20the%20%3Ci%3Eform%3C%2Fi%3E.%0D%0AA%20form%20is%20simply%20an%20interface%20between%0D%0Adisplay%20and%20control.%20%20Mawl%20forms%20have%20an%0D%0Ainput%20type%20and%20an%20output%20type%20%28possibly%0D%0Aaggregates%2C%20of%20course%29%20and%20use%20templates%0D%0Afor%20their%20display.%0D%0AThe%20really%20cool%20part%20of%20this%20is%20that%20the%0D%0Aapplication%20programmer%20can%20treat%20the%20%0D%0Amulti-step%2C%20event-driven%20sequence%20of%0D%0Adelivering%20a%20form%2C%20letting%20the%20user%20%0D%0Awork%20on%20it%2C%20and%20accepting%20the%20results%20all%0D%0Aas%20if%20it%20were%20an%20atomic%20operation%21%0D%0AMawl%20includes%20a%20simple%20exception%20handling%0D%0Amechanism%20for%20taking%20care%20of%20unusual%20cases%0D%0Aor%20error%20conditions.%0D%0A%3Cbr%3E%0D%0AThe%20current%20implementation%20of%20Mawl%20is%0D%0Aimplemented%20as%20a%20translator%2C%20converting%0D%0AMawl%20code%20into%20C%2B%2B%20code%20for%20compiling%0D%0Aand%20linking%20with%20a%20run-time%20library.%0D%0AMawl%20is%20available%20from%20Lucent%20technologies%0D%0Aat%20no%20charge%2C%20but%20with%20licensing%20conditions. origin=D.A.%20Ladd%2C%20J.C.%20Ramming%2C%20T.%20Ball%2C%201995. seealso=C%2B%2B%2C%20Perl remark=One%20of%20the%20primary%20design%20goals%20of%20Mawl%20was%0D%0Ato%20separate%20the%20control%20logic%20of%20a%20service%0D%0Afrom%20its%20presentation.%20%20To%20this%20end%2C%20Mawl%0D%0Auses%20template-driven%20HTML%20generation%20for%0D%0Aweb%20services%2C%20with%0D%0Aso-called%20%27.mhtml%27%20files%20allowed%20to%20include%0D%0Avarious%20kinds%20of%20Mawl%20substitutions.%0D%0A%3Cbr%3E%0D%0ASince%20Mawl%20does%20not%20have%20all%20the%20facilities%0D%0Aone%20might%20wish%20in%20a%20general-purpose%0D%0Aprogramming%20language%2C%20it%20permits%20inclusion%0D%0Aof%20in-line%20C%2FC%2B%2B%20code.%0D%0A%3Cbr%3E%0D%0AMawl%20was%20created%20as%20part%20of%20Project%20Tardis%0D%0Aat%20Bell%20Labs%20%28now%20Lucent%29. links1=Planet%20Mawl%20%28resource%20%26amp%3B%20advocacy%20site%29%3Dhttp%3A%2F%2Fwww.cs.utexas.edu%2Fusers%2Fcpg%2Fmawl%2F links2=Mawl%20Programming%20Tutorial%3Dhttp%3A%2F%2Fwww.bell-labs.com%2Fproject%2FMAWL%2Ftutorial.html links3=Mawl%20system%20overview%20and%20links%3Dhttp%3A%2F%2Fwww.bell-labs.com%2Fproject%2FMAWL%2Fmawl.html links4= links5= date=Last%20updated%203%2F7%2F98 sample=%3Cpre%3E%0D%0A%2F%2A%20the%20Voting%20example%20from%20the%20Mawl%202.1%20Tutorial%20%2A%2F%0D%0A%0D%0Atypedef%20%7B%20string%20name%2C%20int%20nVotes%20%7D%20vote%3B%0D%0Astatic%20%5B%20vote%20%5D%20tally%20%3D%20%5B%20%5D%3B%0D%0Astatic%20int%20total%20%3D%200%3B%0D%0Asession%20vote%0D%0A%7B%0D%0A%20%20%20%20%20%20%20%20auto%20form%20%7B%20%5B%20vote%20%5D%20tally%2C%20int%20total%2C%20string%20castvote%20%7D%20showvote%3B%0D%0A%20%20%20%20%20%20%20%20showvote.put%28%20%7B%20tally%2C%20total%2C%20%22Vote%22%20%7D%20%29%3B%0D%0A%7D%0D%0A%0D%0Asubsession%20void%20AddVote%28string%20name%29%0D%0A%7B%0D%0A%20%20%20%20%20%20%20%20%2B%2Btotal%3B%0D%0A%20%20%20%20%20%20%20%20auto%20int%20i%3B%0D%0A%20%20%20%20%20%20%20%20for%20%28i%20%3D%200%3B%20i%20%3C%20tally.length%28%29%3B%20%2B%2Bi%29%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20if%20%28tally%5Bi%5D.name%20%3D%3D%20name%29%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20tally%5Bi%5D.nVotes%2B%2B%3B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20return%3B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0D%0A%20%20%20%20%20%20%20%20tally.append%28%20%7B%20name%2C%201%20%7D%20%29%3B%0D%0A%7D%0D%0A%0D%0Asession%20Vote%0D%0A%7B%0D%0A%20%20%20%20%20%20%20%20auto%20form%20void%20-%3E%20%7B%20string%20name%20%7D%20getName%3B%0D%0A%20%20%20%20%20%20%20%20AddVote%28%20getName.put%28%29.name%20%29%3B%0D%0A%7D%0D%0A%3C%2Fpre%3E _store=1 _add=Mawl _usertab=1 _usersearch=0 _format=full = name=Mercury nameURL=http%3A%2F%2Fwww.cs.mu.oz.au%2Fresearch%2Fmercury%2F see= logo=147x130%3Dhttp%3A%2F%2Fwww.cs.mu.oz.au%2Fresearch%2Fmercury%2Fpics%2Fmerclogo_small.jpg type=L%20-%20Rule-based%20or%20logical desc=Mercury%20is%20a%20logic%20programming%20language%0D%0Awith%20some%20functional%20language%20features.%0D%0AIt%20was%20designed%20to%20give%20the%20%0D%0Asemantic%20benefits%20of%20declarative%0D%0Aprogramming%20and%20the%20speed%20and%20error-checking%0D%0Aof%20procedural%20programming.%0D%0A%3Cbr%3E%0D%0AThe%20syntax%20of%20Mercury%20is%20similar%20to%20that%0D%0Aof%20Prolog%2C%20but%20supports%20additional%20%0D%0Aconstructs%20that%20declare%20type%2C%20mode%2C%0D%0Aand%20other%20constraints.%0D%0AData%20types%20supported%20by%20the%20language%20%0D%0Ainclude%3A%20integers%2C%20reals%2C%20strings%2C%20and%0D%0Aa%20very%20flexible%20record%2Funion%20type%3B%0D%0Athe%20standard%20library%20supports%20a%20wide%0D%0Avariety%20of%20collection%20types%20including%0D%0Aarrays%2C%20lists%2C%20trees%2C%20maps%2C%20etc.%0D%0AAs%20a%20hybrid%20%0D%0Alogic%2Ffunctional%20%0D%0Aprogramming%20language%2C%20Mercury%20does%0D%0Anot%20support%20conventional%20procedural%0D%0Acontrol%20flow%20constructs.%20%20It%20does%0D%0Asupport%20higher-order%20function%0D%0Aoperators%20like%20curried%20functions%2C%20filters%2C%0D%0Aand%20closures.%0D%0A%3Cbr%3E%0D%0AUnlike%20most%20logic%20programming%20languages%2C%0D%0AMercury%20is%20not%20interpreted.%20%20Instead%2C%0D%0Athe%20compiler%20translates%20Mercury%20code%0D%0Amodules%20into%20portable%20C.%20%20This%20gives%0D%0AMercury%20additional%20portability%20and%20speed%2C%0D%0Abut%20prevents%20it%20from%20creating%20and%0D%0Aevaluating%20new%20code%20on%20the%20fly.%0D%0A%3Cbr%3E%0D%0ASince%20Mercury%20is%20purely%20functional%0D%0A%28side-effect-free%29%20the%20I%2FO%20model%0D%0Adepends%20on%20the%20notion%20of%20an%20%22io_state%22%0D%0Avalue.%20%20This%20makes%20output%20a%20little%0D%0Atricky%2C%20but%20doesn%27t%20break%20the%20semantics.%20%20%0D%0A%3Cbr%3E%0D%0AA%20free%20implementation%20of%20Mercury%20for%0D%0AUnix%20and%20Windows%20platforms%20is%20available%0D%0Afree.%20%20Mercury%20is%20distributed%20with%20some%0D%0ALinux%20systems.%20%20In%20order%20to%20take%20advantage%0D%0Aof%20Mercury%2C%20however%2C%20the%20target%20system%20must%0D%0Ahave%20a%20good%20C%20compiler. origin=Mercury%20Project%2C%20University%20of%20Melbourne%2C%201993. seealso=Prolog%2C%20C remark=Mercury%20is%20designed%20to%20fold%20some%20of%20the%0D%0Aattractive%20features%20of%20mainstream%20%0D%0A%27imperative%27%20languages%20into%20a%20logic%0D%0Aprogramming%20system%2C%20advantages%20like%0D%0Aspeed%2C%20scalability%2C%20strong%20type%0D%0Achecking%2C%20and%20early%20error%20detection.%0D%0ATheir%20approach%20is%20basically%20allow%0D%0Athe%20programmer%20to%20convey%20to%0D%0Athe%20language%20system%20with%20a%20good%20deal%20of%0D%0Aadditional%20information%20about%20types%2C%20modes%2C%0D%0Adeterminism%2C%20purity%2C%20and%20other%20aspects%0D%0Aof%20the%20code.%20%20Using%20this%20information%2C%20the%0D%0AMercury%20compiler%20can%20perform%20many%0D%0Aoptimizations%20not%20possible%20in%20looser%0D%0Alanguages.%20%20Also%2C%20of%20course%2C%20Mercury%0D%0Ais%20compiled%20while%20most%20other%20logic%0D%0Alanguages%20are%20interpreted%3A%20the%0D%0Acompiler%20generates%20C%20code%20from%20which%0D%0Aa%20native%20C%20compiler%20can%20generate%20a%20%0D%0Abinary%20executable.%0D%0A%3Cbr%3E%0D%0AThe%20C%20code%20generated%20by%20the%20Mercury%0D%0Acompiler%20can%20employ%20various%20non-standard%0D%0AC%20features%2C%20such%20as%20in-line%20assembly%0D%0Aand%20register%20globals%2C%0D%0Aif%20the%20C%20compiler%20supports%20them.%20%20With%20all%0D%0Aof%20these%20optimizations%20turned%20on%2C%20Mercury%0D%0Ais%20roughly%20an%20order%20of%20magnitude%20faster%0D%0Athan%20normal%20Prolog%2C%20%0D%0Aand%20twice%20as%20fast%20as%20the%20fastest%0D%0Acommercial%20Prolog%20systems.%0D%0A%3Cbr%3E%0D%0AInterestingly%2C%20the%20current%20free%20Mercury%0D%0Acompiler%20is%20written%20in%20itself%2C%20having%0D%0Abeen%20bootstrapped%20from%20Prolog.%20%20 links1=Mercury%20download%20area%20%28code%2C%20docs%29%3Dftp%3A%2F%2Fturiel.cs.mu.OZ.AU%2Fpub%2Fmercury links2= links3= links4= links5= date=Last%20updated%2012%2F20%2F97 sample=%3Cpre%3E%0D%0A%25%20An%20example%20of%20finding%20primes%20using%20a%20sieve%0D%0A%25%20%28adapted%20from%20a%20logic%20programming%20benchmark%20in%20mercury%29%0D%0A%3A-%20interface.%0D%0A%3A-%20import_module%20list%2C%20int.%0D%0A%0D%0A%3A-%20implementation.%0D%0A%0D%0A%3A-%20pred%20primes%28int%2C%20list%28int%29%29.%0D%0A%3A-%20mode%20primes%28in%2C%20out%29%20is%20det.%0D%0A%0D%0A%3A-%20pred%20integers%28int%2C%20int%2C%20list%28int%29%29.%0D%0A%3A-%20mode%20integers%28in%2C%20in%2C%20out%29%20is%20det.%0D%0A%0D%0A%3A-%20pred%20sift%28list%28int%29%2C%20list%28int%29%29.%0D%0A%3A-%20mode%20sift%28in%2C%20out%29%20is%20det.%0D%0A%0D%0A%3A-%20pred%20remove%28int%2C%20list%28int%29%2C%20list%28int%29%29.%0D%0A%3A-%20mode%20remove%28in%2C%20in%2C%20out%29%20is%20det.%0D%0A%0D%0Aprimes%28Limit%2C%20Ps%29%20%3A-%20integers%282%2C%20Limit%2C%20Is%29%2C%20sift%28Is%2C%20Ps%29.%0D%0A%0D%0Aintegers%28Low%2C%20High%2C%20Result%29%20%3A-%20%0D%0A%20%20%20%20%20%20%20%20%28%20Low%20%3D%3C%20High%20-%3E%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20M%20is%20Low%20%2B%201%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20Result%20%3D%20%5BLow%20%7C%20Rest%5D%2C%20integers%28M%2C%20High%2C%20Rest%29%0D%0A%20%20%20%20%20%20%20%20%3B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20Result%20%3D%20%5B%5D%0D%0A%20%20%20%20%20%20%20%20%29.%0D%0A%0D%0Asift%28%5B%5D%2C%20%5B%5D%29.%0D%0Asift%28%5BI%20%7C%20Is%5D%2C%20%5BI%20%7C%20Ps%5D%29%20%3A-%20remove%28I%2C%20Is%2C%20New%29%2C%20sift%28New%2C%20Ps%29.%0D%0A%0D%0Aremove%28_P%2C%20%5B%5D%2C%20%5B%5D%29.%0D%0Aremove%28P%2C%20%5BI%20%7C%20Is%5D%2C%20Result%29%20%3A-%0D%0A%20%20%20%20%20%20%20%20M%20is%20I%20mod%20P%2C%0D%0A%20%20%20%20%20%20%20%20%28%20M%20%3D%200%20-%3E%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20Result%20%3D%20Nis%2C%20remove%28P%2C%20Is%2C%20Nis%29%0D%0A%20%20%20%20%20%20%20%20%3B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20Result%20%3D%20%5BI%20%7C%20Nis%5D%2C%20remove%28P%2C%20Is%2C%20Nis%29%0D%0A%20%20%20%20%20%20%20%20%29.%0D%0A%3C%2Fpre%3E _store=1 _add=Mercury _usertab=1 _usersearch=0 _format=full = name=Miranda nameURL= see= logo= type=F%20-%20Functional%20or%20lambda-based desc=Miranda%20is%20an%20interpreted%20pure-functional%0D%0Alanguage%2C%20intended%20both%20for%20teaching%0D%0Afunctional%20programming%20and%20for%20application%0D%0Adevelopment.%0D%0A%3Cbr%3E%0D%0AAs%20a%20pure%20functional%20language%2C%20Miranda%0D%0Ahas%20no%20conventional%20imperative%20control%0D%0Aconstructs.%0D%0AInstead%2C%20Miranda%20%27scripts%27%20consist%20of%0D%0Aa%20set%20of%20equations%20that%20define%20various%0D%0Adata%20structures%20and%20operations.%0D%0AData%20types%20available%20in%20Miranda%20include%0D%0Abooleans%2C%20identifiers%20%28symbols%29%2C%0D%0Aintegers%2C%20characters%2C%20%0D%0Areals%2C%20strings%2C%20%0D%0Alists%2C%20tuples%2C%20and%20functions.%0D%0AMiranda%20is%20strongly%20typed%2C%20in%20the%20sense%0D%0Athat%20all%20functions%20enforce%20type%20constraints.%0D%0ALists%20are%20extremely%20important%20in%20Miranda%2C%20%0D%0Aas%20they%20are%20in%20many%20functional%20languages.%0D%0AMiranda%20provides%20a%20powerful%20%0D%0Adefinition%20syntax%20for%20lists%20called%0D%0A%3Ci%3Elist%20comprehensions%3C%2FI%3E.%0D%0A%3Cbr%3E%0D%0AUnlike%20Lisp%20and%20the%20original%20version%20of%20ML%2C%0D%0AMiranda%20uses%20lazy%20evaluation%20for%20all%0D%0Aexpressions.%20%20This%20allows%20the%20language%0D%0Asystem%20to%20support%20infinite%20lists%20and%0D%0Aindefinite%20parameters.%0D%0AMiranda%20supports%20many%20of%20the%20higher-order%0D%0Afeatures%20expected%20of%20an%20advanced%0D%0Afunctional%20language%3A%20curried%20functions%2C%0D%0Afirst-class%20functions%2C%0D%0Asophisticated%20pattern%20matching%20on%0D%0Arule%20application%2C%20and%20definition%20of%0D%0Aalgebraic%20types.%0D%0A%3Cbr%3E%0D%0AThe%20syntax%20of%20Miranda%20is%20very%20terse%20and%0D%0Acompact.%20%20The%20language%20has%20no%20%0D%0Aspecial%20statement%0D%0Asyntax%2C%20everything%20is%20an%20expression.%0D%0AThe%20basic%20syntax%20for%20function%20application%0D%0Ais%20prefix%2C%20but%20infix%20notation%20can%20also%0D%0Abe%20used%20in%20most%20cases.%0D%0A%3Cbr%3E%0D%0AThe%20only%20implementation%20of%20Miranda%20is%20%0D%0Athe%20commercial%20one%2C%20it%20is%20available%20for%0D%0Amost%20Unix%20systems%20including%20Linux.%0D%0AInformation%20about%20Miranda%20is%20fairly%20easy%20to%0D%0Afind%20on%20the%20web%2C%20but%20the%20language%20system%0D%0Adoes%20not%20seem%20to%20be%20available%20for%20download%0D%0Aanywhere.%20%20Apparently%20it%20must%20be%20%0D%0Apurchased%20commercially.%20%20There%20are%20several%0D%0Agood%20computer%20science%20books%20about%20Miranda.%0D%0A origin=David%20Turner%2C%20University%20of%20Kent%2C%201985. seealso=FP%2C%20ML%2C%20Haskell%2C%20Hope remark=Miranda%20began%20as%20an%20academic%20project%20at%20the%0D%0AUniversity%20of%20Kent%2C%20but%20was%20later%20%0D%0Acommercialized%20by%20Research%20Software%20Ltd.%0D%0A%3Cbr%3E%0D%0ATypically%2C%20Miranda%20is%20used%20as%20an%20interactive%0D%0Atext-based%20interpreter%2C%20with%20the%20programmer%0D%0Aentering%20commands%20and%20expressions%20directly%0D%0Aand%20the%20system%20evaluating%20or%20storing%20them.%0D%0AOf%20course%2C%20the%20system%20can%20also%20import%20source%0D%0Acode%20files.%0D%0A%3Cbr%3E%0D%0AThe%20most%20recent%20version%20of%20the%20commercial%0D%0AMiranda%20seems%20to%20be%202.02%2C%20dating%20to%201995. links1=Miranda%20information%20and%20links%20at%20U.%20of%20Michigan%3Dhttp%3A%2F%2Fwww.engin.umd.umich.edu%2FCIS%2Fcourse.des%2Fcis400%2Fmiranda%2Fmiranda.html links2=The%20Miranda%20System%20Manual%3Dhttp%3A%2F%2Fwww-info2.info.ucl.ac.be%2Fetudiants%2Flangages%2FMiranda%2Fman_miranda%2Fmiranda.html links3=Topics%20in%20Miranda%20Programming%20%28notes%29%3Dhttp%3A%2F%2Fwww.doc.ic.ac.uk%2Flab%2Ffirstyear%2Fmira_lecture_notes%2Fmira_topics.html links4= links5= date=Last%20updated%202%2F25%2F98 sample=%3Cpre%3E%0D%0A%7C%7C%20Sorting%20with%20the%20comparison%20function%20as%20a%20parameter%0D%0A%7C%7C%20%28adapted%20from%20code%20example%20by%20Simon%20Thompson%29%0D%0AsortG%20%3A%3A%20%28%2A%20-%3E%20%2A%20-%3E%20bool%29%20-%3E%20%5B%2A%5D%20-%3E%20%5B%2A%5D%0D%0A%0D%0AsortG%20comp%20%28a%3Ax%29%0D%0A%20%20%3D%20sortG%20comp%20smaller%20%2B%2B%20%5Ba%5D%20%2B%2B%20sortG%20comp%20larger%0D%0A%20%20%20%20where%0D%0A%20%20%20%20smaller%20%3D%20%5B%20b%20%7C%20b%3C-x%20%3B%20comp%20b%20a%20%5D%0D%0A%20%20%20%20larger%20%20%3D%20%5B%20b%20%7C%20b%3C-x%20%3B%20comp%20a%20b%20%5D%0D%0A%0D%0A%7C%7C%20Example%20Use%0D%0ACompInt%20%3A%3A%20%28%2A%20-%3E%20%2A%20-%3E%20bool%29%0D%0A%0D%0ACompInt%20m%20n%20%3D%20%28m%20%3C%20n%29%0D%0A%0D%0ASortG%20CompInt%20%5B3%2C5%2C0%2C12%2C8%2C43%2C7%5D%0D%0A%3C%2Fpre%3E _store=1 _add=Miranda _usertab=1 _usersearch=0 _format=full = name=ML nameURL=http%3A%2F%2Fburks.bton.ac.uk%2Fburks%2Flanguage%2Fml%2Findex.htm see= logo= type=F%20-%20Functional%20or%20lambda-based desc=ML%20is%20the%20name%20for%20a%20family%20of%20functional%0D%0Aprogramming%20languages%3A%20ML%2C%20SML%2C%20SML%2FNJ%2C%0D%0ACAML%2C%20EML%2C%20and%20others.%20%20The%20features%0D%0Aand%20usage%20of%20the%20different%20versions%20vary%0D%0Asomewhat%3B%20this%20description%20is%20based%20on%0D%0Adocumentation%20for%20Standard%20ML.%0D%0AML%20language%20systems%20are%20usually%20interpreters.%0D%0A%3Cbr%3E%0D%0AML%20is%20a%20%27pure%27%20functional%20language%2C%20in%20the%0D%0Asense%20that%20there%20is%20not%20assignment%20to%20%0D%0Astorage%20permitted.%20%20Instead%2C%20in%20ML%20the%0D%0Aprogrammer%20declares%20functions%20and%0D%0Areferences%20to%20values%3B%20ML%20is%20a%20declarative%0D%0Arather%20than%20a%20procedural%20language.%20%20The%0D%0Alack%20of%20VonNeumann%20semantics%20makes%20functional%0D%0Alanguages%20like%20ML%20challenging%20for%20the%0D%0Aprogrammer%2C%20but%20functional%20programs%0D%0Aare%20much%20more%20amenable%0D%0Ato%20formal%20analysis%20and%20proofs%20of%20correctness.%0D%0A%3Cbr%3E%0D%0AML%20supports%20many%20of%20the%20advanced%0D%0Acapabilities%20expected%20of%20a%20good%20functional%0D%0Alanguage%3A%20recursion%2C%20strong%20typing%20with%20type%0D%0Ainference%2C%0D%0Aa%20good%20variety%20of%20built-in%20data%20types%2C%0D%0Afacilities%20to%20construct%20aggregate%20and%0D%0Afunctional%20types%2C%0D%0Alate%20binding%2C%20function%0D%0Acomposition%2C%20higher-order%20functions%2C%0D%0Aand%20exception%20handling.%0D%0A%3Cbr%3E%0D%0APure%20functional%20languages%20permit%20no%20%0D%0Aside-effects%20of%20functional%20evaluation.%0D%0AThese%20languages%20are%20usually%20of%20limited%0D%0Autility.%0D%0AML%20provides%20file%20and%20network%20I%2FO%20to%0D%0Asupport%20writing%20real%20programs%3B%20%0D%0Awriting%20data%20constitutes%20a%20side%0D%0Aeffect%20of%20evaluating%20an%20output%20function.%0D%0AML%20also%0D%0Asupports%20references%20to%20mutable%20storage%2C%0D%0Athus%20allowing%20the%20programmer%20some%20of%20the%0D%0Aconvenience%20of%20a%20VonNeumann%20model%20while%0D%0Apreserving%20functional%20operation%3F%0D%0A%3Cbr%3E%0D%0AAll%20SML%20systems%20share%20a%20common%20library%0D%0Aof%20built-in%20functions%20and%20modules%20called%0D%0Athe%20SML%20Basis%20Library.%20%20The%20basis%20library%0D%0Aprovides%20various%20data%20manipulation%2C%20I%2FO%2C%0D%0Astring%20handling%2C%20and%20operating%20system%0D%0Ainterface%20functions.%0D%0A%3Cbr%3E%0D%0AML%27s%20sophisticated%20type%20system%20gives%20the%0D%0Aprogrammer%20the%20ability%20to%0D%0Adefine%20simple%20functions%20that%20automatically%0D%0Aget%20applied%20to%20the%20right%20kind%20of%20data.%20%20It%0D%0Aalso%20supports%20very%20fine-grained%20polymorphism.%0D%0AMany%20other%20functional%20languages%20designed%0D%0Aafter%20ML%20also%20support%20a%20pattern-matching%0D%0Aapproach%20to%20function%20application.%0D%0A%3Cbr%3E%0D%0AThe%20name%20%3Cb%3EML%3C%2Fb%3E%20originally%20stood%20for%20%0D%0A%3Cb%3EM%3C%2Fb%3Eeta-%3Cb%3EL%3C%2Fb%3Eanguage.%0D%0A%3Cbr%3E%0D%0AML%20developed%0D%0Ain%20several%20ways%20during%20the%20mid%20to%20late-1980s%3B%0D%0Aa%20common%20dialect%20and%20base%20set%20of%20features%0D%0Awere%20standardized%20as%20SML%20in%201990.%20%20The%0D%0Astandard%20was%20revised%20in%201997%2C%20language%20systems%0D%0Athat%20comply%20with%20the%20new%20standard%20are%0D%0Acalled%20SML%2797%20implementations.%0D%0A%3Cbr%3E%0D%0AInformation%20on%20ML%20is%20easily%20available%0D%0Aon%20the%20Internet.%20%20%20Several%20free%0D%0Aimplementations%20of%20ML%20exist%20for%20most%0D%0Aplatforms%2C%20some%20of%20the%20most%20popular%20are%0D%0ASML%2FNJ%2C%20CAML%2C%20and%20Moscow-ML.%20%20At%20least%0D%0Aone%20commercial%20implementation%2C%20from%0D%0A%3Ca%20href%3D%22http%3A%2F%2Fwww.harlequin.com%2Fproducts%2Fads%2Fml%2F%22%3EHarlequin%20Group%3C%2Fa%3E%20is%0D%0Aalso%20available. origin=Standard%20ML%2C%20Milner%20and%20Tofte%2C%201990. seealso=FP%2C%20Lisp%2C%20Haskell%2C%20Hope remark=SML%20is%20a%20very%20rich%20and%20usable%20functional%0D%0Alanguage.%20%20It%20provides%20a%20very%20practical%0D%0Aset%20of%20aggregate%20data%20types%20%28tuples%2C%0D%0Alists%2C%20arrays%29%2C%20and%20good%0D%0Afacilities%20for%20defining%20new%20types.%0D%0A%3Cbr%3E%0D%0AMany%20academic%20functional%20languages%20do%0D%0Anot%20support%20graphics%20or%20GUIs%2C%20some%0D%0Aversions%20of%20ML%20can%20present%20visual%0D%0Ainterfaces%20and%20output%20using%20the%20X%20Window%0D%0ASystem%20or%20MS-Windows.%0D%0AThe%20French%20CAML%20system%20support%0D%0Aobject-oriented%20programming%20and%20a%20Tk-based%0D%0AGUI%20system.%0D%0AThere%20have%20also%20been%20versions%20of%20ML%0D%0Athat%20support%20lazy%20evaluation%20and%0D%0Aconcurrency. links1=An%20Introduction%20to%20ML%3Dhttp%3A%2F%2Fwww.dcs.napier.ac.uk%2Fcourse-notes%2Fsml%2Fmanual.html links2=The%20Usenet%20ML%20FAQ%20List%3Dhttp%3A%2F%2Fwww.cis.ohio-state.edu%2Fhypertext%2Ffaq%2Fusenet%2Fmeta-lang-faq%2Ffaq.html links3=Information%20about%20Standard%20ML%3Dhttp%3A%2F%2Ffoxnet.cs.cmu.edu%2Fsml.html links4=Moscow%20ML%20information%20and%20ML%20links%3Dhttp%3A%2F%2Fwww.dina.kvl.dk%2F%7Esestoft%2Fmosml.html links5=The%20CAML%20language%20%28at%20Inria%29%3Dhttp%3A%2F%2Fpauillac.inria.fr%2Fcaml%2F date=Last%20updated%209%2F23%2F01 sample=ML%20definitions%20to%20sort%20a%20list%20and%20compute%0D%0Athe%20mean%2C%20adapted%20from%20Andrew%20Cumming%27s%20GIML.%0D%0A%3Cp%3E%0D%0A%3Cpre%3E%0D%0Afun%20sort%20nil%20%3D%20nil%20%3A%20int%20list%0D%0A%7C%20%20%20sort%28h%3A%3At%29%20%3D%20let%0D%0A%20%20%20%20%20%20%20%20fun%20insert%28i%2Cnil%29%20%3D%20%5Bi%5D%0D%0A%20%20%20%20%20%20%20%20%7C%20%20%20insert%28i%2Ch%3A%3At%29%20%3D%20if%20i%3Eh%20then%20i%3A%3Ah%3A%3At%20else%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20h%3A%3Ainsert%28i%2Ct%29%0D%0Ain%20insert%28h%2C%20sort%20t%29%20end%3B%0D%0A%0D%0Afun%20mean%20l%20%3D%20let%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20fun%20sl%28nil%20%2Csum%2Clen%29%20%3D%20sum%20div%20len%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%7C%20%20%20sl%28h%3A%3At%2Csum%2Clen%29%20%3D%20sl%28t%2Csum%2Bh%2Clen%2Bh%29%0D%0A%20%20%20%20%20in%20sl%28l%2C0%2C0%29%20end%3B%0D%0A%0D%0Amean%28sort%20%5B2%2C3%2C5%2C7%2C11%2C13%5D%20%40%20%5B6%2C14%2C28%5D%20%29%0D%0A%3C%2Fpre%3E _store=1 _add=ML _usertab=1 _usersearch=0 _format=full = name=Modula%203 nameURL=http%3A%2F%2Fwww.m3.org%2F see= logo=http%3A%2F%2Fwww.m3.org%2Fimages%2Flogo2.gif type=O%20-%20Object-oriented desc=Modula-3%20is%20a%20compiled%20procedural%20that%0D%0Asupports%20object-oriented%20and%20block-structured%0D%0Aprogramming.%20%20It%20is%20a%20descendant%20of%20Modula-2%0D%0Aand%20Pascal%2C%20and%20is%20intended%20for%20application%0D%0Adevelopment%2C%20large-scale%20software%0D%0Aengineering%2C%20and%20computer%20science%0D%0Aeducation.%0D%0A%3Cbr%3E%0D%0AAs%20a%20descendant%20of%20Pascal%2C%20Modula-3%20is%20%0D%0Astrongly%20typed%20and%20can%20enforce%20type%20safety.%0D%0AThe%20language%20supports%20a%20conventional%0D%0Aset%20of%20%20data%20types%3A%20numbers%2C%20enumerations%2C%20strings%2C%20%0D%0Arecords%2C%20sets%2C%20and%20arrays.%20%20Modula-3%20supports%20the%20usual%20control%20flow%0D%0Aselection%20and%20looping%20constructs.%0D%0AIt%20provides%0D%0Agood%20support%20for%20modular%20programming%2C%20including%0D%0Asubroutines%20and%20modules%20with%20explicit%0D%0Ainterfaces.%0D%0AUnlike%20Pascal%2C%20Modula-3%20has%20full%20support%0D%0Afor%20abstract%20data%20types%20and%0D%0Asimple%20OOP%2C%20%0D%0Adynamic%20memory%20management%20with%20garbage%0D%0Acollection%2C%20generics%2C%20exception%20handling%2C%20%0D%0Aand%20concurrency.%20%20It%20is%20an%0D%0Aimportant%20part%20of%20Modula-3%27s%20claim%20to%20being%0D%0Aindustrial-strength%20that%20it%20includes%0D%0Arobust%20error%20handling%20and%20multi-threading%0D%0Aas%20part%20of%20the%20language.%0D%0A%3Cbr%3E%0D%0AModula-3%20does%20not%20support%20some%20OOP%20features%0D%0Athat%20it%27s%20designers%20believed%20would%20overcomplicate%0D%0Athe%20language%20or%20detract%20from%20productive%0D%0Asoftware%20development%3A%20multiple%0D%0Ainheritance%2C%20delegation%2C%0D%0Aoperator%20overloading%2C%20and%0D%0Areflection.%0D%0A%3Cbr%3E%0D%0AModule-3%27s%20object-oriented%20programming%20model%0D%0Ais%20very%20simple%3A%20an%20object%20is%20simply%20a%20%0D%0Arecord%20type%20augmented%20with%20a%20method%20suite.%0D%0ASuperclass%20method%20overloading%20is%20supported.%0D%0A%3Cbr%3E%0D%0APascal%20compilers%20attempt%20to%20enforce%20type%0D%0Asafety%20in%20every%20line%20of%20a%20program.%20%20A%0D%0AModula-3%20compiler%20allows%20some%20modules%20to%0D%0Abe%20designated%20as%20explicitly%20unsafe%2C%20freeing%0D%0Athe%20programmer%20to%20use%20tricky%20or%20%0D%0Amachine-dependent%20techniques%20to%20gain%0D%0Aefficiency%20or%20access%20to%20hardware.%0D%0AThere%20is%20a%20fairly%20wide%20variety%20of%20support%20%0D%0Alibraries%20available%20for%20Modula-3%2C%20including%0D%0Aones%20for%20network%20communication%2C%20%0D%0Aobject%20persistence%2C%20database%20access%2C%203D%20rendering%2C%0D%0Aand%20graphical%20user%20interfaces.%0D%0A%3Cbr%3E%0D%0AEarly%20implementations%20of%20Modula-3%20produced%0D%0AC%20code%20for%20native%20compilation%2C%20but%20modern%0D%0Asystems%20produce%20native%20machine%20code%20directly.%0D%0A%3Cbr%3E%0D%0ABoth%20commercial%20and%20free%20compilers%20for%20%0D%0AModula-3%20are%20available%2C%20for%20all%20major%0D%0Aplatforms%20include%20Unix%2C%20Linux%2C%20and%20WindowsNT.%0D%0ADigital%20Equipment%20Corp%2C%20one%20of%20the%20%0D%0Aoriginators%20of%20the%20language%2C%20makes%20a%20free%0D%0Acompiler%20available%20in%20source%20form.%0D%0AAt%20least%20one%20commercial%20implementation%20of%20Modula-3%0D%0Ais%20available%20as%20a%20comprehensive%20development%0D%0Aenvironment.%20%20Information%20about%20Modula-3%20is%0D%0Aalso%20fairly%20easy%20to%20find%20on%20the%20WWW.%0D%0A%0D%0A origin=Luca%20Cardelli%20%3Ci%3Eet%20al%3C%2Fi%3E%2C%20Olivetti%20and%20DEC%2C%201988. seealso=Modula-2%2C%20Pascal%2C%20Ada%2C%20C%2B%2B%2C%20Oberon%2C%20Cedar%2C%20Mesa%2C%20Obliq remark=Developers%20that%20have%20used%20Modula-3%20have%0D%0Ahad%20praise%20for%20its%20elegance%20and%20completeness.%0D%0AIt%20has%20a%20large%20feature%20set%2C%20but%20not%0D%0Aso%20large%20or%20complex%0D%0Aas%20to%20be%20overwhelming%20%28e.g.%20Ada%29.%0D%0AFacilities%20that%20you%20need%20for%20serious%0D%0Asystem%20development%20are%20built-in%2C%20like%0D%0Aconcurrency%20and%20garbage%20collection.%0D%0AIt%20is%20something%20of%20a%20mystery%20that%20%0D%0AModula-3%20is%20not%20more%20widely%20employed%20%28perhaps%0D%0Aits%20family%20relationship%20with%20Pascal%2C%20regarded%0D%0Aby%20many%20as%20too%20self-limiting%20for%20serious%0D%0Adevelopment%2C%20scares%20developers%20away%29.%0D%0A%3Cbr%3E%0D%0AThe%20direct%20linguistic%20predecessor%20of%0D%0AModula-3%20was%20Modula-2%2B%2C%20an%20enhancement%20of%0D%0AModula-2%20incorporating%20ideas%20from%20Mesa.%0D%0ANiklaus%20Wirth%20was%20consulted%20on%20the%20design%0D%0Aof%20Modula-3%2C%20but%20was%20not%20the%20primary%20%0D%0Adesigner%20as%20he%20was%20for%20Modula-2.%0D%0A%3Cbr%3E%0D%0AAt%20this%20time%2C%20Modula-3%20is%20not%20the%20subject%0D%0Aof%20any%20formal%20standardization%20activities.%0D%0A links1=Modula-3%20Reference%20and%20Tutorial%3Dhttp%3A%2F%2Fwww.cs.columbia.edu%2Fgraphics%2Fmodula3%2Ftutorial%2F links2=M3%20Resources%20at%20Polytechnic%20Montreal%3Dhttp%3A%2F%2Fm3.polymtl.ca%2Fm3%2F links3=M3%20Information%20and%20Links%20at%20DEC%3Dhttp%3A%2F%2Fwww.research.digital.com%2FSRC%2Fmodula-3%2Fhtml%2Fhome.html links4=Critical%20Mass%20Module-3%20implementation%3Dhttp%3A%2F%2Fwww.cmass.com%2Fcm3%2F links5= date=Last%20updated%2012%2F30%2F97 sample=An%20example%20of%20using%20the%20Modula-3%20VBTKit%20GUI%0D%0Asystem.%0D%0A%3Cp%3E%0D%0A%3Cpre%3E%0D%0AMODULE%20Push%20EXPORTS%20Main%3B%0D%0AIMPORT%20Trestle%2C%20VBT%2C%20TextVBT%2C%20RigidVBT%2C%20ButtonVBT%2C%20BorderedVBT%2C%20HVSplit%2C%0D%0A%20%20%20%20%20%20%20Axis%3B%0D%0A%0D%0Aaction%20of%20button%20when%20pushed%20%0D%0A%0D%0APROCEDURE%20QuitAction%20%28self%3A%20ButtonVBT.T%3B%20READONLY%20cd%3A%20VBT.MouseRec%29%20%3D%0D%0A%20%20BEGIN%0D%0A%20%20%20%20Trestle.Delete%28main%29%3B%20%20%20%20%20%20%20%20%28%2A%20NB.%20%20%22main%22%20is%20visible%20here.%20%2A%29%0D%0A%20%20END%20QuitAction%3B%0D%0A%0D%0ACONST%0D%0A%20%20horz%20%3D%2030.0%3B%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%28%2A%20horizontal%20size%20%22hello%22%20window%20%2A%29%0D%0A%20%20vert%20%3D%2010.0%3B%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%28%2A%20vertical%20size%20of%20%22hello%22%20window%20%2A%29%0D%0A%0D%0AVAR%0D%0A%20%20hello%20%3A%3D%20RigidVBT.FromHV%28TextVBT.New%28%22Hello%20World%22%29%2C%20horz%2C%20vert%29%3B%0D%0A%20%20quit%20%20%3A%3D%20ButtonVBT.New%28ch%20%3A%3D%20TextVBT.New%28%22Quit%22%29%2C%20action%20%3A%3D%20QuitAction%29%3B%0D%0A%20%20main%20%20%3A%3D%20HVSplit.Cons%28Axis.T.Ver%2C%20hello%2C%20BorderedVBT.New%28quit%29%29%3B%0D%0A%0D%0ABEGIN%0D%0A%20%20Trestle.Install%28main%29%3B%0D%0A%20%20Trestle.AwaitDelete%28main%29%3B%0D%0AEND%20Push.%0D%0A%3C%2Fpre%3E _store=1 _add=Modula%203 _usertab=1 _usersearch=0 _format=full = name=Modula-2 nameURL=http%3A%2F%2Fsc22wg13.twi.tudelft.nl%2F see= logo= type=S%20-%20block-structured desc=Modula-2%20is%20a%20procedural%2C%20block-structured%0D%0Alanguage%20intended%20for%20application%20programming%0D%0Aand%20computer%20science%20education.%20%20It%0D%0Awas%20designed%20to%20foster%20good%20software%0D%0Aengineering%20practices%2C%20and%20also%20to%20remedy%0D%0Asome%20of%20the%20shortcomings%20of%20its%20predecessor%2C%0D%0APascal.%20%20Modula-2%20has%20very%20good%20support%0D%0Afor%20program%20modularity%3A%20named%20modules%2C%0D%0Aseparate%20compilation%2C%0D%0Aand%20data%20hiding.%20%20It%20also%20featured%20strong%0D%0Atype%20checking%2C%20a%20variety%20of%20conventional%0D%0Adata%20types%2C%20dynamic%20arrays%2C%20and%20concurrency%21%0D%0A%3Cbr%3E%0D%0AModula-2%20was%20designed%20to%20support%20the%0D%0Aconstruction%20and%20maintenance%20of%20real%0D%0Aapplication%20software%20systems%20%28unlike%20Pascal%29.%0D%0AIts%20support%20for%20concurrency%20and%20dynamic%0D%0Amemory%20management%20are%20also%20better%20than%0D%0APascal%2C%20allowing%20the%20programmer%20more%0D%0Aflexibility.%20%20The%20syntax%20of%20Modula-2%0D%0Ais%20also%20less%20rigid%20than%20that%20of%20Pascal%2C%0D%0Aallowing%20the%20programmer%20to%20declare%20%0D%0Avariables%20and%20other%20items%20nearer%20to%0D%0Awhere%20they%20are%20used.%0D%0ALastly%2C%20Modula-2%20support%20function%20signature%0D%0Atype%20checking%20across%20module%20boundaries.%0D%0A%3Cbr%3E%0D%0AModula-2%20compilers%20are%20available%2C%20with%0D%0Aa%20little%20searching%2C%20for%20most%20platforms%3A%0D%0AUnix%20systems%2C%20PCs%2C%20and%20VMS%2C%20and%20even%0D%0Asome%20cross-compilers%20for%20embedded%20systems.%0D%0ABoth%20free%20and%20commercial%20compilers%20are%0D%0Aavailable%2C%20but%20some%20may%20be%20a%20bit%20old.%20%20There%0D%0Ais%20at%20least%20one%20Modula-2%20system%2C%20by%20XDS%2C%0D%0Athat%20can%20generate%20C%20code%20from%20Modula-2%20code%2C%0D%0Ato%20improve%20portability.%0D%0AA%20fair%20number%20of%20utility%2C%20math%2C%20data%20%0D%0Ahandling%2C%20distributed%20computing%2C%0D%0Aand%20other%20libraries%20are%20available%0D%0Afor%20Modula-2%20programmers.%0D%0A%3Cbr%3E%0D%0AIn%20its%20original%20niche%2C%20%0D%0AModula-2%20has%20been%20partly%20superseded%20by%0D%0AModula-3%2C%20Oberon%2C%20and%20Ada.%0D%0A origin=Niklaus%20Wirth%2C%201980. seealso=Pascal%2C%20Modula-3%2C%20Oberon%2C%20Ada remark=Modula-2%20enjoyed%20some%20degree%20of%20adoption%0D%0Ain%20the%20early%201980s%2C%20especially%20for%20%0D%0Asoftware%20engineering%20education.%20%20Many%0D%0Acommercial%20compilers%20were%20written%20for%20it.%0D%0AModula-2%27s%20features%20and%20semantics%20%0D%0Ahad%20substantial%20influence%20on%20the%20design%0D%0Aof%20Ada.%20%20Unfortunately%2C%20while%20Modula-2%0D%0Aallows%20construction%20of%20abstract%20data%20types%2C%0D%0Ait%20does%20not%20support%20inheritance%20and%20%0D%0Atherefore%20was%20not%20able%20to%20fully%20support%0D%0Athe%20paradigm%20of%20object-oriented%20programming%0D%0Athat%20became%20popular%20in%20the%20late%201980s.%0D%0A%3Cbr%3E%0D%0AThere%20were%20several%20variations%20of%20Modula%0D%0Acreated%20in%20the%201980s%2C%20including%20a%20data-parallel%0D%0Adialect%20called%20Modula-2%2A%20designed%20for%20%0D%0Amassively%20parallel%20computers.%0D%0A%0D%0A links1=Modula-2%20resource%20list%3Dhttp%3A%2F%2Fwww.ee.newcastle.edu.au%2Fusers%2Fstaff%2Fpeter%2Fm2%2FModula2.html%20 links2=Formal%20syntax%20of%20Modula-2%3Dhttp%3A%2F%2Fcuiwww.unige.ch%2Fdb-research%2FEnseignement%2Fanalyseinfo%2FModula2%2F links3=Modula-2%20FAQ%3Dhttp%3A%2F%2Fwww.arjay.bc.ca%2FModula-2%2Fm2faq.html links4=Modula-2%20Home%20Site%3Dhttp%3A%2F%2Fwww.modula2.org links5=Free%20Modula-2%20Pages%3Dhttp%3A%2F%2Fwww.unet.univie.ac.at%2F%7Ea9406973%2Fmodula2%2F date=Last%20updated%203%2F29%2F03 sample=%3Cpre%3E%0D%0AMODULE%20AlphaRandom%3B%0D%0A%28%2A%20Randomize%20the%20alphabet%2C%20and%20show%20how%20to%20use%20the%20module%20Shuffle%20%2A%29%0D%0A%28%2A%20John%20Andrea%2C%201992%20%2A%29%0D%0A%0D%0AFROM%20InOut%20IMPORT%20WriteLn%2C%20WriteString%3B%0D%0AFROM%20Shuffle%20IMPORT%20Deck%2C%20Create%2C%20Next%2C%20Reset%3B%0D%0A%0D%0AVAR%0D%0A%20%20d%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3ADeck%3B%0D%0A%20%20i%2C%20j%2C%20min%2C%20max%2C%20n%20%3ACARDINAL%3B%0D%0A%0D%0ABEGIN%0D%0A%20%20min%20%3A%3D%20ORD%28%20%27a%27%20%29%3B%0D%0A%20%20max%20%3A%3D%20ORD%28%20%27z%27%20%29%3B%0D%0A%0D%0A%20%20n%20%20%20%3A%3D%20max%20-%20min%20%2B%201%3B%0D%0A%20%20Create%28%20d%2C%20min%2C%20max%20%29%3B%0D%0A%0D%0A%20%20FOR%20i%20%3A%3D%201%20TO%2010%20DO%0D%0A%20%20%20%20%20WriteString%28%20%27random%20alphabet%20%3D%20%27%20%29%3B%0D%0A%20%20%20%20%20FOR%20j%20%3A%3D%201%20TO%20n%20DO%0D%0A%20%20%20%20%20%20%20%20WriteString%28%20CHR%28%20Next%28%20d%20%29%20%29%20%29%3B%0D%0A%20%20%20%20%20END%3B%0D%0A%20%20%20%20%20WriteLn%3B%0D%0A%20%20%20%20%20Reset%28%20d%20%29%3B%0D%0A%20%20END%3B%0D%0A%0D%0AEND%20AlphaRandom.%0D%0A%3C%2Fpre%3E _store=1 _add=Modula%202 _usertab=1 _usersearch=0 _format=full = name=MUMPS nameURL=http%3A%2F%2Fwww.radix.net%2F%7Edemoel%2Fmdc%2F see= logo=100x82%3Dhttp%3A%2F%2Fwww.radix.net%2F%7Edemoel%2Fmdc%2Fmta-c.gif type=D%20-%20Database%20or%20Text-processing desc=MUMPS%20%28aka%20M%29%20is%20a%20procedural%2C%20interpreted%0D%0Alanguage%20with%20extensive%20features%20for%20%0D%0Aevent-driven%20programming%2C%20text%0D%0Ahandling%2C%20and%20database%0D%0Amanipulation.%20%20The%20language%20syntax%20is%20%0D%0Avery%20simple%2C%20but%20quirky.%20%20A%20program%0D%0Awritten%20in%20M%20consists%20of%20commands%0D%0Awhich%20operate%20on%20variables.%20%20These%0D%0Avariables%20can%20be%20simple%20numbers%2C%20records%2C%0D%0Alists%2C%20or%0D%0Aenormous%20databases.%20%20Persistent%0D%0Avariables%20are%20called%20%27globals%27%20and%0D%0Ausually%20live%20in%20the%20database.%20%20Access%0D%0Ato%20globals%20is%20transparent%2C%20freeing%20the%0D%0Aprogrammer%20from%20worrying%20about%20many%0D%0Adatabase%20management%20issues.%0D%0A%3Cbr%3E%0D%0AThe%20usual%0D%0Asequential%20control%20structures%20are%20present%0D%0Ain%20MUMPS%2C%20but%20in%20somewhat%20idiosyncratic%0D%0Aforms.%20%20The%20usual%20arithmetic%20operators%0D%0Aare%20included%2C%20but%20MUMPS%27s%20real%20strength%0D%0Ais%20in%20its%20string%20handling.%20%20It%20has%20a%0D%0Aflexible%20set%20of%20commands%20for%20pattern%0D%0Amatching%2C%20sorting%2C%0D%0Aand%20manipulating%20strings%20%28although%0D%0Anot%20as%20extensive%20as%20SNOBOL%20or%20Icon%29.%0D%0A%3Cbr%3E%0D%0AM%20is%20designed%20to%20support%20multi-programming%0D%0Aand%20distributed%20computation.%20%20There%20are%0D%0Aalso%20GUI%20implementations%20available%20for%0D%0Athe%20language%2C%20although%20the%20base%20language%0D%0Astandard%20supports%20only%20text-based%20screens.%0D%0A%3Cbr%3E%0D%0AInformation%20about%20MUMPS%20products%20and%20%0D%0Aservices%20are%20easy%20to%20find%20on%20the%20Web%2C%0D%0Aas%20are%20implementations%20of%20the%20language%0D%0Aand%20its%20underlying%20fast%20database.%0D%0AMost%20MUMPS%20implementations%20are%20commercial%2C%0D%0Abut%20there%20are%20also%20free%20systems%20around%0D%0Afor%20Unix%2C%20VMS%2C%20and%20DOS%2C%20and%20Windows%0D%0Aoperating%20systems.%0D%0ATutorials%20on%20MUMPS%20do%20not%20seem%20to%20be%0D%0Aavailable%20easily%20on%20the%20web%2C%20but%20copies%0D%0Aof%20the%20language%20standard%20are.%20 origin=Octo%20Barnett%20M.D.%20%3Ci%3Eet%20al%3C%2Fi%3E%2C%20Mass.%20General%20Hospital%2C%201969. seealso=DBase%2C%20Icon%2C%20Tcl%2C%20Basic remark=MUMPS%20originally%20stood%20for%20%0D%0A%3Cb%3EM%3C%2Fb%3Eassachusetts%20General%20Hospital%20%0D%0A%3Cb%3EU%3C%2Fb%3Etility%20%3Cb%3EM%3C%2Fb%3Eulti-%3Cb%3EP%3C%2Fb%3Erogramming%0D%0A%3Cb%3ES%3C%2Fb%3Eystem.%20%20After%20the%20language%20became%0D%0Astandardized%20and%20commercialized%2C%20people%0D%0Astarted%20calling%20it%20%27M%27%20because%20it%20was%0D%0Acooler%20and%20didn%27t%20evoke%20an%20unpleasant%0D%0Adisease.%20%20%0D%0A%3Cbr%3E%0D%0AModern%20M%20systems%20are%20extensible%2C%20allowing%0D%0Ainterfacing%20to%20other%20languages%20%28like%20C%29%2C%0D%0Anetworking%20facilities%2C%20and%20other%20database%0D%0Asystems.%20%0D%0A%3Cbr%3E%0D%0AM%20was%20originally%20mostly%20used%20in%20medical%0D%0Ainformatics%20%28partly%20as%20a%20result%20of%20NIH%0D%0Aencouragement%20in%20the%20early%201970s%29%2C%20and%0D%0Ait%20remains%20very%20popular%20for%20building%0D%0Aclinical%20databases%20worldwide.%20%20MUMPS%0D%0Ausers%20groups%20and%20technical%20associations%0D%0Aare%20active%2C%20and%20an%20international%20M%20%0D%0Aconference%20is%20held%20each%20year.%0D%0ASince%20the%20advent%20of%20the%20WWW%2C%20MUMPS%20has%0D%0Abeen%20used%20to%20write%20web%20servers%2C%0D%0Aweb%2Fdatabase%20interfaces%2C%20and%20other%20CGI%0D%0Aservices.%0D%0A%3Cbr%3E%0D%0AStandization%20efforts%20for%20M%20are%20still%20%0D%0Aactive%2C%20concentrating%20on%20keeping%20the%0D%0Alanguage%20current%20and%20useful%20for%20%0D%0Aits%20programming%20community.%20%20%0D%0A%3Cbr%3E%0D%0AMUMPS%20products%20are%20sometimes%20touted%0D%0Aas%20%27post-relational%27%20databases%2C%20even%0D%0Athough%20the%20language%20was%20invented%20before%0D%0ARDBMS%20products%20became%20popular.%20%20However%2C%0D%0Afor%20complex%20multi-dimensional%20data%2C%20MUMPS%20is%20regarded%20%0D%0Aas%20superior%20to%20RDBMSs%20by%20many%20practitioners.%0D%0ANewer%20OODBMS%20products%20compete%20in%20MUMPS%27s%0D%0Aterritory. links1=M%20Technology%20Resource%20Center%3Dhttp%3A%2F%2Fwww.mcenter.com%2Fmtrc%2Findex.html links2=Chris%20Bonnici%27s%20M%20page%3Dhttp%3A%2F%2Fwww.geocities.com%2FSiliconValley%2F7041%2Fref.html links3=M%20Technology%20Association%20of%20North%20America%3Dhttp%3A%2F%2Fwww.mtechnology.org%2Findex.shtml links4=An%20FTP%20site%20with%20MUMPS%20info%20and%20downloads%3Dftp%3A%2F%2Ftiger.cs.ucdavis.edu%2Fpub%2F links5= date=Last%20updated%2012%2F16%2F97 sample=%3Cpre%3E%0D%0A%3B%20EXAMPLE%20FROM%20UC%20DAVIS%0D%0ALEXICON%20%3BPROGRAM%20TO%20CREATE%20SORTED%20DICTIONARY%0D%0A%20READ%20%21%2C%22ENTER%20NEXT%20TERM%20%28NULL%20TO%20QUIT%29%3A%20%22%2CTERM%0D%0A%20GOTO%3ATERM%3D%22%22%20LIST%0D%0A%20READ%20%21%2C%22ENTER%20ONE%20LINE%20DEFINITION%3A%20%22%2CDEF%0D%0A%20SET%20%5EWORD%28TERM%29%3DDEF%20GOTO%20LEXICON%0D%0ALIST%20READ%20%21%2C%22WOULD%20YOU%20LIKE%20TERMS%20LISTED%20%28Y%2FN%29%3F%22%2CYESNO%0D%0A%09QUIT%3AYESNO%27%3F1%22Y%22.E%0D%0A%09SET%20X%3D%22%22%20%3BTO%20GO%20TO%20PRINTER%20ADD%20%27OPEN%201%20USE%201%27%0D%0A%20FOR%20I%3D1%3A1%20SET%20Y%3D%24ORDER%28%5EWORD%28X%29%29%2CX%3DY%20QUIT%3AX%3D%22%22%20%20WRITE%20%21%2CY%2C%3F15%2C%5EWORD%28Y%29%0D%0A%3C%2Fpre%3E _store=1 _add=MUMPS _usertab=1 _usersearch=0 _format=full =