Section 1

Preview this deck

Arv hos typklasser

Front

Star 0%
Star 0%
Star 0%
Star 0%
Star 0%

0.0

0 reviews

5
0
4
0
3
0
2
0
1
0

Active users

0

All-time users

0

Favorites

0

Last updated

6 years ago

Date created

Mar 1, 2020

Cards (33)

Section 1

(33 cards)

Arv hos typklasser

Front

T.ex. att alla Ord-typer är Eq-typer.

Back

Subtyping polymorphism / subtyping / inclusion polymorphism

Front

A form of polymorphism in which a subtype is a datatype related to another datatype (the supertype) by some notion of substitutability, meaning that program functions written to operate on elements of the supertype can also operate on elements of the subtype.

Back

Stark och svag typning

Front

• Avser hur starkt språket begränsar tolkningen av värden. Svag typing har sämre typing rules och kan skapa oväntade värden eller kan typkonvertera automatisk. • Sebesta: strongly typed if all type errors are always caught.

Back

Parametric polymorphism

Front

Allows a function / data type to be written generically in order to handle values uniformly without depending on their type.

Back

Lambdakalkyl

Front

• Ett formellt system som skapades för att undersöka funktioner och rekursion. • har delvis inspirerat den funktionella paradigme

Back

Funk prog vs objektor. prog

Front

Likheter • Klasser och arv • Klasser samlar funktioner • Standardmetoder Skillnad • Inga objekt eller attribut • Parametrisk & ad hoc polymorfism • Alla metoder är statiskt bestämda, ingen klassinformation i data • Åtkomstkontroll (public, private) indirekt via modulsystem

Back

type safety

Front

the feature of programming languages that prevents assigning values of an incorrect data type

Back

Ren funktion

Front

Dess returvärde är detsamma för samma argument och det evaluering har inga sidoeffekter.

Back

Type coercion

Front

the automatic conversion of data from its existing type into the type required for an operation.

Back

data type

Front

All values in a programming language have a "type" - such as a Number, Boolean, or String - that dictates how the computer will interpret it. For example 7+5 is interpreted differently from "7"+"5"

Back

Funktioner i Haskell

Front

• Har samma "rättigheter" som andra värden. • Behöver inte namnges, anonym • Nya funktioner från gamla, currying • Kan ges som argument • Kan returneras som värde • Kan lagras i datastrukturer

Back

Svansrekursion

Front

En speciell sorts rekursion då sista operationen i en funktion är ett rekursivt anrop. Om det rekursiva anropet returnerar direkt utan några kvarhängande operationer från anropen innan så är metoden svansrekursiv.

Back

Polymorfisk funktion

Front

Kan tillämpas på flera typer

Back

Strikt evaluering

Front

Innebär att alla parametrars värde är kända när en operator eller funktion anropas.

Back

Monads

Front

funktionellt idiom för - sekvensiella beroenden - att dölja parametrar - förenkla kod

Back

Currying

Front

Funktioner som tar ett arg och returnerar en ny funktion kallas curried functions. Alla funktioner i Haskell tar alltid en param och returnerar ett värde eller en ny funktion. MALL •Nämn skapandet av nya funktioner ur gamla •

Back

Higher-order functions

Front

en funktion som tar minst en funktion som argument och/eller returnerar en funktion

Back

Funktionell programming

Front

en ren funktionell programmeringsstil där grundläggande operationen är funktionsansrop. Fördelar • mindre att skriva • färre buggar • god kodåtervinning • Moduler. Storskalig programutveckling •goda bibliotek.

Back

pattern matching

Front

Kontrollera en token-sekvens för närvaron av beståndsdelarna i något mönster. I funktionella språk kan mönsteranpassning användas för matchning på standard primitiva värden som ints. Det är dock mer användbart för sammansatta typer.

Back

Folding

Front

Man viker in en operator mellan listans element.

Back

Definera egna typnamn

Front

Även med polymorfa typer: type AssocList a b = [(a, b)] Användning: getElem :: AssocList String Int -> String -> Int

Back

Type conversion

Front

An explicit function call that takes a value of one type and computes a corresponding value of another type. Ex: fromIntegral

Back

map vs foldr

Front

Map applicerar funktionen på varje element i listan och representerar en ny lista med funktionen applicerad. Foldl representerar ett element som fås genom att applicera funktionen om och om igen med start i ett startvärde.

Back

ad hoc polymorphism

Front

Refererar till funktioner som kan tillämpas på argument av olika typer, men som beter sig olika beroende på arg-typen som de tillämpats på. Ex: Overloading and coercion.

Back

List comprehension

Front

A neat syntactical way to process elements in a sequence and return a list with the results.

Back

Full referential transparency

Front

I en Haskellfunktion kan du bara binda ett uttryck till ett namn en gång. Mål: • Bibehålla värden inom ett funktionsanrop, oavsett bieffekter • Förenkla felsökningen eftersom man inte behöver ha en mental bild av minnet som i imperativ programmering.

Back

Lazy Evaluation / call-by-need

Front

Utvärdering av ett uttryck som försenas tills dess värde behövs och undviker upprepad utvärdering (sharing). Ex: element i en ström. Nackdelar: - Kan slöa ner ett program om explicit strikt eval ej används (dvs alla parametrars värden är inte kända). - Kan slösa på minne: "löftet" tar plats Fördelar: - Kan snabba upp ett program - Undviker onödiga beräkningar. - Automatiskt! - Erbjuder smarta uttryckssätt.

Back

Partiell funktionsapplikation

Front

ett sätt att skapa funktioner genom att ange en eller flera parametrar till en befintlig funktion. Den nya funktionen fungerar som den gamla men med de första parametervärdena låsta. Ex: takeFive = take 5

Back

Overriding (överskuggning)

Front

In object-orienteed progs, a languague feature that allows a subclass to provide a specific implementation of a method that already exists in its superclasses. Ex: function eat() in the superclass Animal can be overwritten if specified in its subclass Dog (subtyping polymorfism)

Back

Overloading (överlagring)

Front

En överlagrad funktion/operator beter sig olika beroende på antalet/typen av inmatat argument. • T.ex. Addition (+) på Int är inte samma som addition på Float (ad hoc polymorfi)

Back

. vs $ i Haskell

Front

$ undviker parenteser. Allt som kommer efter $ har företräde framför allt som kommer före. (f $! x tvingar x att evalueras först. i x . y "kedjas" resultatet av y med x , om y är en funktion med (bestämd) input(s). Annars compile error. (Funktionskomposition)

Back

Algebraiska datatyper

Front

• En typ "komponerad" av andra typer, var och en med en konstruktor, kallas algebraisk. • Obs: En produkttyp har endast en konstruktor. Ex: data Color = RGB Int Int Int • Obs: En enumererad typ listar konstruktorer utan argument.

Back

Type classes

Front

The programmer defines a type class by specifying a set of function or constant names, together with their respective types, that must exist for every type that belongs to the class. In Haskell, types can be parameterized; a type class Eq intended to contain types that admit equality would be declared in the following way: class Eq a where (==) :: a -> a -> Bool (/=) :: a -> a -> Bool

Back