Een praktische lambda-rekenmachine

Een praktische Lambda-rekenmachine is een Lambda-rekenmachine met handige opdrachten en snelkoppelingen.
Download nu

Een praktische lambda-rekenmachine Rangschikking & Samenvatting

Advertentie

  • Rating:
  • Vergunning:
  • Public Domain
  • Prijs:
  • FREE
  • Naam uitgever:
  • Oleg
  • Uitgever website:
  • http://pobox.com/~oleg/ftp/Computation/lambda-calc.html

Een praktische lambda-rekenmachine Tags


Een praktische lambda-rekenmachine Beschrijving

Een praktische lambda-calculator is een Lambda-calculator met handige commando's en snelkoppelingen. Een praktische lambda-calculator is een normale orde evaluator de getypte lambda-calculus, uitgebreid met geschikte opdrachten en snelkoppelingen voor het programmeren daarin meer productive.Shortcuts onderscheiden constanten termen vertegenwoordigen. Commando's definiëren van nieuwe shortcuts, activeer traceren van alle reducties, vergelijken termen modulo alpha-conversie, print alle gedefinieerde snelkoppelingen en evaluatie vlaggen, etc.Terms te evalueren en commando's worden op een read-eval-print-loop (REPL) "prompt" ingevoerd of "opgenomen" uit een bestand door een speciaal commando. Een Haskell tak is een inbedding van de lambda calculator (als domein-specifieke taal) in Haskell. De calculator kan interactief worden gebruikt binnen Hugs of GHCi.The onderhavige calculator implementeert het lijkt een doelmatige en elegante algoritme normale volgorde reducties. Het algoritme is "functioneel meer" dan de traditioneel gebruikte benadering.Het algoritme lijkt identiek aan die welke door yacc sans een kritisch verschil. De calculator neemt ook een "functionele" benadering van de hygiëne van beta-substituties, die wordt verkregen door het kleuren van identificatiemiddelen indien absoluut noodzakelijk. Deze aanpak is "meer functioneel", omdat het voorkomt dat een wereldwijde balie of de schroefdraad van de verfemmer door het hele proces. De integratie van de rekenmachine met Haskell laat ons slaan termen in variabelen en eenvoudig en intuïtief te combineren them.The traditioneel recept voor een normale-order reductie omvat een onaangename uitdrukking "koken tot ze gaar zijn." De uitdrukking noopt volgen reductie pogingen te houden, en impliceert een lelijke iteratief algoritme. We zijn voorstellen wat lijkt op een efficiënte en elegante techniek die via intuïtieve herschrijven rules.Our rekenmachine kan worden geïmplementeerd zijn, zoals yacc, beschikt over een stapel en werkt door het doen van een opeenvolging van shift en stapsgewijs verkleinen. Het enige belangrijke verschil van yacc is dat de lambda-calculator "reparses" het resultaat na de succesvolle verminderen stap. De bron en de doeltaal van onze "parser" (lambda-calculator) zijn hetzelfde; daarom kan de parser ontleden zelf zijn weliswaar toepassen stapel kan impliciet worden gemaakt. In dat geval kan het algoritme worden gebruikt voor normalisatie van getypte lambda-termen Twelf.The volgende voorbeelden blijkt dat lambda-calculus wordt een domein-specifieke taal ingebed in Haskell> c0 = f ^ x ^ x - Church getal 0 > succ = c ^ f ^ x ^ f # (c # f # x) - opvolger> c1 = eval $ succ # c0 - pre-evalueren andere getallen> c2 = eval $ succ # c1> c3 = eval $ succ # c2> c4 = eval $ succ # c3It is inderdaad handig om termen op te slaan in Haskell variabelen en pre-evalueren (dat wil zeggen, normaliseren) hen. Ze zijn inderdaad termen. We kunnen altijd vragen de tolk om de term te tonen. Zo tonen c4 opbrengsten (f. (X. F (f (f (f x))))). Laat mul = a ^ b ^ f ^ a # (b # f) - (. b b). vermenigvuldiging eval $ mul # c1 --->, de identiteit functie eval $ mul # c0 ---> (b ( . f (x x.))), dat "const 0" Deze resultaten zijn algebraïsche: elk getal te vermenigvuldigen met nul geeft altijd nul. We zien nu hoe lambda-calculus nuttig voor bewijsvoering kan worden, zelfs over universeel gekwantificeerd formulas.The rekenmachine werktuigen Dr. Fairbairn de suggestie om de diepte van gedrukte termen te beperken. Dit maakt het mogelijk om een aantal uiteenlopende voorwaarden kan voldoen en print (zogenaamde tail-divergent termen): Lambda_calc> laten y_comb = f ^ ((p ^ p # p) # (C ^ f # (C # c))) in eval $ y_comb # cc (c (c (c (c (c (c (c (c (c (...)))))))))) Het is verbazingwekkend hoe goed lambda-calculus en Haskell samen spelen.


Een praktische lambda-rekenmachine Gerelateerde software

Remitt

Remitt is elektronische medische informatie vertaling en transmissie. ...

208

Downloaden

Exodusii

Exodusii is een model dat is ontwikkeld om eindige elementengeometrie en topologie op te slaan en op te halen. ...

166

Downloaden

Yapso

YAPSO is een plotmodule voor GNU OCTAVE. Het is een alternatief voor GNUPLOT. ...

171

Downloaden