• Keine Ergebnisse gefunden

Funktionale Programmierung Der ghci Interpreter

N/A
N/A
Protected

Academic year: 2022

Aktie "Funktionale Programmierung Der ghci Interpreter"

Copied!
7
0
0

Wird geladen.... (Jetzt Volltext ansehen)

Volltext

(1)

Funktionale Programmierung

Der ghci Interpreter

Hans-Wolfgang Loidl, Andreas Abel

LFE Theoretische Informatik, Institut f¨ur Informatik, Ludwig-Maximilians Universit¨at, M¨unchen

April 27, 2009

(2)

Der GHCi Interpreter

GHCi ist ein Interpreter f¨ ur Haskell und kommt zusammen mit dem Glasgow Haskell Compiler (GHC).

Aufruf von der Kommandozeile: ghci Dokumentation:

http://haskell.org/ghc/docs/latest/html/users guide/ghci.html

Download:

http://haskell.org/ghc/download ghc 6 10 2.html#binaries

(3)

Installation

Installation in Kurzform:

Kommandozeile

# download

wget http://haskell.org/ghc/dist/6.10.2/ghc-6.10.2-i386-unknown-linux.tar.bz2

# unpack

tar xvfj ghc-6.10.2-i386-unknown-linux.tar.bz2

# install cd ghc-6.10.2

./configure --prefix=${HOME}/DISTS/ghc-6.10.2 make install

export PATH=${HOME}/DISTS/ghc-6.10.2/bin:${PATH}

(4)

Erstes Beispiel

GHCi Interaktion ghci

Prelude> 2*2 4

Prelude> let square x = x*x Prelude> square (2+2) 16

Prelude> [x*x | x <- [1..9], even x]

[4,16,36,64]

Prelude> sum it 120

:quit

(5)

Beispiele der 1. Vorlesung

GHCi Interaktion ghci Types.hs

*Types> sqs1 [1..10]

[1,4,9,16,25,36,49,64,81,100]

*Types> sqs_even [1..10]

[4,16,36,64,100]

*Types> :type sqs_even sqs_even :: [Int] -> [Int]

*Types> sqs_even [1..10] == sqs_even’ [1..10]

True

*Types> :info sqs_even

sqs_even :: [Int] -> [Int] -- Defined at Types.hs:116:0

*Types> :help ...

*Types> :quit

(6)

Weitere Beispiele

GHCi Interaktion ghci

*Types> :load "Types.hs"

*Types> let add’ x y = x+y

*Types> let inc’ = add 1

*Types> map’ inc’ [1..5]

[2,3,4,5,6]

*Types> :{

*Types| let { sqs’ [] = []

*Types| ; sqs’ (x:xs) = x*x : (sqs’ xs)

*Types| }

*Types| :}

*Types> sqs’ [1..10]

[1,4,9,16,25,36,49,64,81,100]

*Types> :quit

(7)

Debugging

GHCi Interaktion ghci Types.hs

*Types> :break 28

Breakpoint 0 activated at Types.hs:28:12-15

*Types> foo (BI { b=True, i=2}) Stopped at Types.hs:28:12-15 _result :: Int = _

bi :: BI = BI True 2

[Types.hs:28:12-15] *Types> :list 27 foo :: BI -> Int

28 foo bi = if b bi

29 then i bi

[Types.hs:28:12-15] *Types> bi BI {b = True, i = 2}

[Types.hs:28:12-15] *Types> :step Stopped at Types.hs:29:16-19 _result :: Int = _

bi :: BI = BI True 2

Referenzen

ÄHNLICHE DOKUMENTE

negatively, (i~e. not requesting the features they allow,) will save many bytes of processor memory which will be returned to the user in the form of available

Der Befehl stack ghci startet dabei eine interaktive REPL die für die ersten Versuche mit Haskell

Die Class-Files sind somit auch unabhängig davon, ob sie später auf einer 32-Bit Plattform oder einer 64 Bit Plattform ausgeführt werden.... Im Gegensatz zu Java steht bei dem

Eine Funktion ist immer dann polymorph in einem Argument, wenn sie nicht in das Argument &#34;hineinschaut&#34;. In einem solchen Fall macht sie keine Voraussetzungen an den

Wird in der Technik auch als eine Grundlage für Anwendungsprogramme bezeichnet, die sich zwischen zwei Ebenen eines Rechensystems befinden.. Die Plattform ist wichtig, weil es die

A CONSTANT CAN BE REPRESENTED IN ItffEGER FORMAT.. WHEN THE CONSTAMT IS EVALUATED THE RESULT lJILL STILL ONLY HAVE ABOUT 7 SIGNIFICANT DIGITS OF ACCURACY ... USE

• Wieviel Hilfe muss die Programmiererin und/oder die Verifiziererin geben ?.. John McCarthy, Stanford.. Robin Milner, Edinburgh.. Xavier Leroy, INRIA, Paris.. 4.2

Wenn Vektoren unterschiedlicher Länge in einem Ausdruck verwandt werden, dann werden in den Berechnungen die kürzeren Vektoren durch Wiederholung ihrer Werte verlängert, bis sie