21 |
Implementation och utökning av en typhärledningsalgoritm för Common LispStåhlberg, Simon January 2010 (has links)
<p>Programmeringsspråk har oftast ett typsystem och kan välja att använda olika statiska verktyg att analysera koden. Statiska språk utför typkontroller innan körtillfället och kan då ge garantier att typfel inte kan förekomma, dynamiska språk gör däremot dessa kontroller under körtillfället och om ett dåligt beteende upptäcks avbryts programmet.</p><p>Eftersom kontrollerna görs under körtillfället skrivs inte typsignaturer ut i dynamiska språk. Ett dynamiskt språk kan vara mer flexibelt än ett statiskt språk eftersom inga garantier ges. Eftersom inga typsignaturer skrivs ut går det att skriva program på ett mer koncist sätt. I statiska språk tvingas oftast användaren att skriva ut typerna explicit för variabler och funktioner.</p><p>Typhärledning är processen att härleda typer för uttryck. En typhärledningalgoritm kommer att undersökas, hur kraftfull algoritmen är samt hur algoritmen kan utökas för att klara av flera konstruktioner och ett kraftfullare språk. Typhärledningsalgoritmen kommer att implementeras för Common Lisp. Common Lisp ger inga typgarantier och inga typsignaturer skrivs ut. Alla typer kommer att härledas vilket innebär att vi gör om en delmängd av Common Lisp till ett statiskt språk.</p><p>Algoritmen kommer att utökas för att klara av polymorfism, closures, listor och par. Rapporten undersöker vilka ändringar som behöver göras för att stödja konstruktionerna, hur vi kan göra ändringarna hur de kan implementeras.</p><p>Fördelar med att ha typhärledning är att användaren slipper skriva ut typsignaturer och kan få ökad produktivitet. Den mest generella typsignaturen kommer alltid att härledas och funktioner som är polymorfa kommer att upptäckas automatiskt. Typhärledningsalgoritmen kommer att även typkontrollera programmet, och kan ge garantier att inga problem kommer att uppstå. Verktyget kommer även att skapa ett nytt program med typsignaturer utskrivna som kompilatorn kan använda för att generera effektivare kod.</p>
|
22 |
Implementation och utökning av en typhärledningsalgoritm för Common LispStåhlberg, Simon January 2010 (has links)
Programmeringsspråk har oftast ett typsystem och kan välja att använda olika statiska verktyg att analysera koden. Statiska språk utför typkontroller innan körtillfället och kan då ge garantier att typfel inte kan förekomma, dynamiska språk gör däremot dessa kontroller under körtillfället och om ett dåligt beteende upptäcks avbryts programmet. Eftersom kontrollerna görs under körtillfället skrivs inte typsignaturer ut i dynamiska språk. Ett dynamiskt språk kan vara mer flexibelt än ett statiskt språk eftersom inga garantier ges. Eftersom inga typsignaturer skrivs ut går det att skriva program på ett mer koncist sätt. I statiska språk tvingas oftast användaren att skriva ut typerna explicit för variabler och funktioner. Typhärledning är processen att härleda typer för uttryck. En typhärledningalgoritm kommer att undersökas, hur kraftfull algoritmen är samt hur algoritmen kan utökas för att klara av flera konstruktioner och ett kraftfullare språk. Typhärledningsalgoritmen kommer att implementeras för Common Lisp. Common Lisp ger inga typgarantier och inga typsignaturer skrivs ut. Alla typer kommer att härledas vilket innebär att vi gör om en delmängd av Common Lisp till ett statiskt språk. Algoritmen kommer att utökas för att klara av polymorfism, closures, listor och par. Rapporten undersöker vilka ändringar som behöver göras för att stödja konstruktionerna, hur vi kan göra ändringarna hur de kan implementeras. Fördelar med att ha typhärledning är att användaren slipper skriva ut typsignaturer och kan få ökad produktivitet. Den mest generella typsignaturen kommer alltid att härledas och funktioner som är polymorfa kommer att upptäckas automatiskt. Typhärledningsalgoritmen kommer att även typkontrollera programmet, och kan ge garantier att inga problem kommer att uppstå. Verktyget kommer även att skapa ett nytt program med typsignaturer utskrivna som kompilatorn kan använda för att generera effektivare kod.
|
23 |
Contribution au calcul formel sur ordinateurSiret, Yvon 01 July 1970 (has links) (PDF)
.
|
24 |
Fexprs as the basis of Lisp function application; or, $vau: the ultimate abstractionShutt, John N 01 September 2010 (has links)
"Abstraction creates custom programming languages that facilitate programming for specific problem domains. It is traditionally partitioned according to a two-phase model of program evaluation, into syntactic abstraction enacted at translation time, and semantic abstraction enacted at run time. Abstractions pigeon-holed into one phase cannot interact freely with those in the other, since they are required to occur at logically distinct times. Fexprs are a Lisp device that subsumes the capabilities of syntactic abstraction, but is enacted at run-time, thus eliminating the phase barrier between abstractions. Lisps of recent decades have avoided fexprs because of semantic ill-behavedness that accompanied fexprs in the dynamically scoped Lisps of the 1960s and 70s. This dissertation contends that the severe difficulties attendant on fexprs in the past are not essential, and can be overcome by judicious coordination with other elements of language design. In particular, fexprs can form the basis for a simple, well-behaved Scheme-like language, subsuming traditional abstractions without a multi-phase model of evaluation. The thesis is supported by a new Scheme-like language called Kernel, created for this work, in which each Scheme-style procedure consists of a wrapper that induces evaluation of operands, around a fexpr that acts on the resulting arguments. This arrangement enables Kernel to use a simple direct style of selectively evaluating subexpressions, in place of most Lisps' indirect quasiquotation style of selectively suppressing subexpression evaluation. The semantics of Kernel are treated through a new family of formal calculi, introduced here, called vau calculi. Vau calculi use direct subexpression-evaluation style to extend lambda calculus, eliminating a long-standing incompatibility between lambda calculus and fexprs that would otherwise trivialize their equational theories. The impure vau calculi introduce non-functional binding constructs and unconventional forms of substitution. This strategy avoids a difficulty of Felleisen's lambda-v-CS calculus, which modeled impure control and state using a partially non-compatible reduction relation, and therefore only approximated the Church-Rosser and Plotkin's Correspondence Theorems. The strategy here is supported by an abstract class of Regular Substitutive Reduction Systems, generalizing Klop's Regular Combinatory Reduction Systems."
|
25 |
The design and implementation of memory management and initialization modules for a LISP interpreterWhitley, Lee Roy January 2010 (has links)
Typescript, etc. / Digitized by Kansas Correctional Industries
|
26 |
Natural language analysis via augmented transition networks (ATN)Lazaro, Jose Ma. U. J January 2010 (has links)
Typescript (photocopy). / Digitized by Kansas Correctional Industries
|
27 |
Lifting TransformationsMcAllester, David, Siskind, Jeffrey 01 December 1991 (has links)
Lifting is a well known technique in resolution theorem proving, logic programming, and term rewriting. In this paper we formulate lifting as an efficiency-motivated program transformation applicable to a wide variety of nondeterministic procedures. This formulation allows the immediate lifting of complex procedures, such as the Davis-Putnam algorithm, which are otherwise difficult to lift. We treat both classical lifting, which is based on unification, and various closely related program transformations which we also call lifting transformations. These nonclassical lifting transformations are closely related to constraint techniques in logic programming, resolution, and term rewriting.
|
28 |
Syntactic ClosuresBawden, Alan, Rees, Jonathan 01 June 1988 (has links)
In this paper we describe {\\it syntactic closures}. Syntactic closures address the scoping problems that arise when writing macros. We discuss some issues raised by introducing syntactic closures into the macro expansion interface, and we compare syntactic closures with other approaches. Included is a complete implementation.
|
29 |
Shelang : An Implementation of Probabilistic Programming Language and its ApplicationsGu, Tianyu January 2015 (has links)
Nowadays, probabilistic models are playing a significant role in various areas in- cluding machine learning, artificial intelligence and cognitive science, etc. How- ever, as those models are becoming more and more complex, it shows that the corresponding programs are really hard to maintain and reuse as well. Meanwhile, the current tools are not feasible enough to enable probabilistic modeling and ma- chine learning to be accessible to the working programmer, who has sufficient do- main expertise, but perhaps not enough expertise in probability theory or machine learning. Probabilistic programming is one possible way to solve this. Indeed, probabilistic programming languages are powerful tools to specify probabilistic models directly in terms of a computer programs. While programmers writes normal procedures, everything will be automatically translated into statistical distributions and then users can do inferences upon them. This project aims at exploring and implementing a probabilistic programming language, for which we name as Shelang. We use Scheme, a dialect of Lisp lan- guage which is originated from λ-Calculus, to implement a embedded probabilis- tic programming language. This paper mainly discusses about the design, algo- rithms, details of this implementation and several usages of Shelang and make a conclusion in the end.
|
30 |
EPSCADD : energy performance simulation using CADDVo-Dinh, Nhieu 08 1900 (has links)
No description available.
|
Page generated in 0.0135 seconds