Export translations
Jump to navigation
Jump to search
Settings
Group
FP Homework 1
FP Laboratory 1
FP Laboratory 10
FP Laboratory 11
FP Laboratory 12
FP Laboratory 2
FP Laboratory 3
FP Laboratory 4
FP Laboratory 5
FP Laboratory 6
FP Laboratory 7
FP Laboratory 9
Functional programming
Main Page
Language
aa - Afar
ab - Abkhazian
abs - Ambonese Malay
ace - Achinese
ady - Adyghe
ady-cyrl - Adyghe (Cyrillic script)
aeb - Tunisian Arabic
aeb-arab - Tunisian Arabic (Arabic script)
aeb-latn - Tunisian Arabic (Latin script)
af - Afrikaans
ak - Akan
aln - Gheg Albanian
am - Amharic
an - Aragonese
ang - Old English
anp - Angika
ar - Arabic
arc - Aramaic
arn - Mapuche
arq - Algerian Arabic
ary - Moroccan Arabic
arz - Egyptian Arabic
as - Assamese
ase - American Sign Language
ast - Asturian
atj - Atikamekw
av - Avaric
avk - Kotava
awa - Awadhi
ay - Aymara
az - Azerbaijani
azb - South Azerbaijani
ba - Bashkir
ban - Balinese
bar - Bavarian
bbc - Batak Toba
bbc-latn - Batak Toba (Latin script)
bcc - Southern Balochi
bcl - Central Bikol
be - Belarusian
be-tarask - Belarusian (Taraškievica orthography)
bg - Bulgarian
bgn - Western Balochi
bh - Bhojpuri
bho - Bhojpuri
bi - Bislama
bjn - Banjar
bm - Bambara
bn - Bangla
bo - Tibetan
bpy - Bishnupriya
bqi - Bakhtiari
br - Breton
brh - Brahui
bs - Bosnian
btm - Batak Mandailing
bto - Iriga Bicolano
bug - Buginese
bxr - Russia Buriat
ca - Catalan
cbk-zam - Chavacano
cdo - Min Dong Chinese
ce - Chechen
ceb - Cebuano
ch - Chamorro
cho - Choctaw
chr - Cherokee
chy - Cheyenne
ckb - Central Kurdish
co - Corsican
cps - Capiznon
cr - Cree
crh - Crimean Turkish
crh-cyrl - Crimean Tatar (Cyrillic script)
crh-latn - Crimean Tatar (Latin script)
cs - Czech
csb - Kashubian
cu - Church Slavic
cv - Chuvash
cy - Welsh
da - Danish
de - German
de-at - Austrian German
de-ch - Swiss High German
de-formal - German (formal address)
din - Dinka
diq - Zazaki
dsb - Lower Sorbian
dtp - Central Dusun
dty - Doteli
dv - Divehi
dz - Dzongkha
ee - Ewe
egl - Emilian
el - Greek
eml - Emiliano-Romagnolo
en - English
en-ca - Canadian English
en-gb - British English
eo - Esperanto
es - Spanish
es-419 - Latin American Spanish
es-formal - español (formal)
et - Estonian
eu - Basque
ext - Extremaduran
fa - Persian
ff - Fulah
fi - Finnish
fit - Tornedalen Finnish
fj - Fijian
fo - Faroese
fr - French
frc - Cajun French
frp - Arpitan
frr - Northern Frisian
fur - Friulian
fy - Western Frisian
ga - Irish
gag - Gagauz
gan - Gan Chinese
gan-hans - Gan (Simplified)
gan-hant - Gan (Traditional)
gcr - Guianan Creole
gd - Scottish Gaelic
gl - Galician
glk - Gilaki
gn - Guarani
gom - Goan Konkani
gom-deva - Goan Konkani (Devanagari script)
gom-latn - Goan Konkani (Latin script)
gor - Gorontalo
got - Gothic
grc - Ancient Greek
gsw - Swiss German
gu - Gujarati
gv - Manx
ha - Hausa
hak - Hakka Chinese
haw - Hawaiian
he - Hebrew
hi - Hindi
hif - Fiji Hindi
hif-latn - Fiji Hindi (Latin script)
hil - Hiligaynon
ho - Hiri Motu
hr - Croatian
hrx - Hunsrik
hsb - Upper Sorbian
ht - Haitian Creole
hu - Hungarian
hu-formal - magyar (formal)
hy - Armenian
hyw - Western Armenian
hz - Herero
ia - Interlingua
id - Indonesian
ie - Interlingue
ig - Igbo
ii - Sichuan Yi
ik - Inupiaq
ike-cans - Eastern Canadian (Aboriginal syllabics)
ike-latn - Eastern Canadian (Latin script)
ilo - Iloko
inh - Ingush
io - Ido
is - Icelandic
it - Italian
iu - Inuktitut
ja - Japanese
jam - Jamaican Creole English
jbo - Lojban
jut - Jutish
jv - Javanese
ka - Georgian
kaa - Kara-Kalpak
kab - Kabyle
kbd - Kabardian
kbd-cyrl - Kabardian (Cyrillic script)
kbp - Kabiye
kg - Kongo
khw - Khowar
ki - Kikuyu
kiu - Kirmanjki
kj - Kuanyama
kjp - Eastern Pwo
kk - Kazakh
kk-arab - Kazakh (Arabic script)
kk-cn - Kazakh (China)
kk-cyrl - Kazakh (Cyrillic script)
kk-kz - Kazakh (Kazakhstan)
kk-latn - Kazakh (Latin script)
kk-tr - Kazakh (Turkey)
kl - Kalaallisut
km - Khmer
kn - Kannada
ko - Korean
ko-kp - Korean (North Korea)
koi - Komi-Permyak
kr - Kanuri
krc - Karachay-Balkar
kri - Krio
krj - Kinaray-a
krl - Karelian
ks - Kashmiri
ks-arab - Kashmiri (Arabic script)
ks-deva - Kashmiri (Devanagari script)
ksh - Colognian
ku - Kurdish
ku-arab - Kurdish (Arabic script)
ku-latn - Kurdish (Latin script)
kum - Kumyk
kv - Komi
kw - Cornish
ky - Kyrgyz
la - Latin
lad - Ladino
lb - Luxembourgish
lbe - Lak
lez - Lezghian
lfn - Lingua Franca Nova
lg - Ganda
li - Limburgish
lij - Ligurian
liv - Livonian
lki - Laki
lmo - Lombard
ln - Lingala
lo - Lao
loz - Lozi
lrc - Northern Luri
lt - Lithuanian
ltg - Latgalian
lus - Mizo
luz - Southern Luri
lv - Latvian
lzh - Literary Chinese
lzz - Laz
mai - Maithili
map-bms - Basa Banyumasan
mdf - Moksha
mg - Malagasy
mh - Marshallese
mhr - Eastern Mari
mi - Maori
min - Minangkabau
mk - Macedonian
ml - Malayalam
mn - Mongolian
mni - Manipuri
mnw - Mon
mo - Moldovan
mr - Marathi
mrj - Western Mari
ms - Malay
mt - Maltese
mus - Creek
mwl - Mirandese
my - Burmese
myv - Erzya
mzn - Mazanderani
na - Nauru
nah - Nāhuatl
nan - Min Nan Chinese
nap - Neapolitan
nb - Norwegian Bokmål
nds - Low German
nds-nl - Low Saxon
ne - Nepali
new - Newari
ng - Ndonga
niu - Niuean
nl - Dutch
nl-informal - Nederlands (informeel)
nn - Norwegian Nynorsk
no - Norwegian
nov - Novial
nrm - Norman
nso - Northern Sotho
nv - Navajo
ny - Nyanja
nys - Nyungar
oc - Occitan
olo - Livvi-Karelian
om - Oromo
or - Odia
os - Ossetic
pa - Punjabi
pag - Pangasinan
pam - Pampanga
pap - Papiamento
pcd - Picard
pdc - Pennsylvania German
pdt - Plautdietsch
pfl - Palatine German
pi - Pali
pih - Norfuk / Pitkern
pl - Polish
pms - Piedmontese
pnb - Western Punjabi
pnt - Pontic
prg - Prussian
ps - Pashto
pt - Portuguese
pt-br - Brazilian Portuguese
qqq - Message documentation
qu - Quechua
qug - Chimborazo Highland Quichua
rgn - Romagnol
rif - Riffian
rm - Romansh
rmy - Vlax Romani
rn - Rundi
ro - Romanian
roa-tara - Tarantino
ru - Russian
rue - Rusyn
rup - Aromanian
ruq - Megleno-Romanian
ruq-cyrl - Megleno-Romanian (Cyrillic script)
ruq-latn - Megleno-Romanian (Latin script)
rw - Kinyarwanda
sa - Sanskrit
sah - Sakha
sat - Santali
sc - Sardinian
scn - Sicilian
sco - Scots
sd - Sindhi
sdc - Sassarese Sardinian
sdh - Southern Kurdish
se - Northern Sami
sei - Seri
ses - Koyraboro Senni
sg - Sango
sgs - Samogitian
sh - Serbo-Croatian
shi - Tachelhit
shi-latn - Tachelhit (Latin script)
shi-tfng - Tachelhit (Tifinagh script)
shn - Shan
shy-latn - Shawiya (Latin script)
si - Sinhala
simple - Simple English
sk - Slovak
skr - Saraiki
skr-arab - Saraiki (Arabic script)
sl - Slovenian
sli - Lower Silesian
sm - Samoan
sma - Southern Sami
sn - Shona
so - Somali
sq - Albanian
sr - Serbian
sr-ec - Serbian (Cyrillic script)
sr-el - Serbian (Latin script)
srn - Sranan Tongo
ss - Swati
st - Southern Sotho
stq - Saterland Frisian
sty - cебертатар
su - Sundanese
sv - Swedish
sw - Swahili
szl - Silesian
ta - Tamil
tay - Tayal
tcy - Tulu
te - Telugu
tet - Tetum
tg - Tajik
tg-cyrl - Tajik (Cyrillic script)
tg-latn - Tajik (Latin script)
th - Thai
ti - Tigrinya
tk - Turkmen
tl - Tagalog
tly - Talysh
tn - Tswana
to - Tongan
tpi - Tok Pisin
tr - Turkish
tru - Turoyo
ts - Tsonga
tt - Tatar
tt-cyrl - Tatar (Cyrillic script)
tt-latn - Tatar (Latin script)
tum - Tumbuka
tw - Twi
ty - Tahitian
tyv - Tuvinian
tzm - Central Atlas Tamazight
udm - Udmurt
ug - Uyghur
ug-arab - Uyghur (Arabic script)
ug-latn - Uyghur (Latin script)
uk - Ukrainian
ur - Urdu
uz - Uzbek
uz-cyrl - Uzbek (Cyrillic script)
uz-latn - Uzbek (Latin script)
ve - Venda
vec - Venetian
vep - Veps
vi - Vietnamese
vls - West Flemish
vmf - Main-Franconian
vo - Volapük
vot - Votic
vro - Võro
wa - Walloon
war - Waray
wo - Wolof
wuu - Wu Chinese
xal - Kalmyk
xh - Xhosa
xmf - Mingrelian
xsy - Saisiyat
yi - Yiddish
yo - Yoruba
yue - Cantonese
za - Zhuang
zea - Zeelandic
zgh - Standard Moroccan Tamazight
zh - Chinese
zh-cn - Chinese (China)
zh-hans - Simplified Chinese
zh-hant - Traditional Chinese
zh-hk - Chinese (Hong Kong)
zh-mo - Chinese (Macau)
zh-my - Chinese (Malaysia)
zh-sg - Chinese (Singapore)
zh-tw - Chinese (Taiwan)
zu - Zulu
Format
Export for off-line translation
Export in native format
Fetch
{{DISPLAYTITLE:FP Laboratory 4}}== Functions working with lists == Implement following functions: * Create a function that takes first n elements of the list. <syntaxhighlight lang="Haskell">take' :: Int -> [a] -> [a]</syntaxhighlight> <syntaxhighlight lang="Haskell" class="myDark"> *Main> take' 2 [1,2,3] [1,2] </syntaxhighlight> <div class="mw-collapsible mw-collapsed" data-collapsetext="Hide solution" data-expandtext="Show solution"> <syntaxhighlight lang="Haskell"> take' :: Int -> [a] -> [a] take' 0 _ = [] take' _ [] = [] take' n (x:xs) = x: take' (n-1) xs </syntaxhighlight> [[File:Tryit.png|center|60px|Try it!|link=https://rextester.com/BVU17842]] </div> <div style="clear:both"></div> * Create a function that takes the remaining list after the first n elements. <syntaxhighlight lang="Haskell">drop' :: Int -> [a] -> [a]</syntaxhighlight> <syntaxhighlight lang="Haskell" class="myDark"> *Main> drop' 2 [1,2,3] [3] </syntaxhighlight> <div class="mw-collapsible mw-collapsed" data-collapsetext="Hide solution" data-expandtext="Show solution"> <syntaxhighlight lang="Haskell"> drop' :: Int -> [a] -> [a] drop' 0 x = x drop' _ [] = [] drop' n (_:xs) = drop' (n-1) xs </syntaxhighlight> [[File:Tryit.png|center|60px|Try it!|link=https://rextester.com/BVU17842]] </div> <div style="clear:both"></div> * Create a function that find the smallest element in the list. Consider input restrictions. <syntaxhighlight lang="Haskell">minimum' :: [a] -> a -- Is this right?</syntaxhighlight> <syntaxhighlight lang="Haskell" class="myDark"> *Main> minimum' [1,3,4,0] 0 </syntaxhighlight> <div class="mw-collapsible mw-collapsed" data-collapsetext="Hide solution" data-expandtext="Show solution"> <syntaxhighlight lang="Haskell"> minimum' :: Ord a => [a] -> a minimum' [x] = x minimum' (x:y:z) | x < y = minimum' (x:z) | otherwise = minimum' (y:z) </syntaxhighlight> [[File:Tryit.png|center|60px|Try it!|link=https://rextester.com/BVU17842]] </div> <div style="clear:both"></div> * Find all integer divisors of a given number. <div style="float: right"> [[File:Video logo.png|80px|link=https://youtu.be/8iKGkcOlzpI]]</div> <syntaxhighlight lang="Haskell">divisors :: Int -> [Int]</syntaxhighlight> <syntaxhighlight lang="Haskell" class="myDark"> *Main> divisors 32 [1,2,4,8,16,32] </syntaxhighlight> <div class="mw-collapsible mw-collapsed" data-collapsetext="Hide solution" data-expandtext="Show solution"> <syntaxhighlight lang="Haskell"> divisors :: Int -> [Int] divisors n = tmp n where tmp 0 = [] tmp x | n `mod` x == 0 = x: tmp (x-1) | otherwise = tmp (x-1) divisors' :: Int -> [Int] divisors' n = filter (\x -> n `mod` x == 0) [1..n] divisors'' :: Int -> [Int] divisors'' n = [x | x<-[1..n], n `mod` x == 0] </syntaxhighlight> [[File:Tryit.png|center|60px|Try it!|link=https://rextester.com/BVU17842]] </div> <div style="clear:both"></div> == Functions working with lists and tuples == Implement following functions: * Create a function that merge two lists into one list of tuples. <syntaxhighlight lang="Haskell">zipThem:: [a] -> [b] -> [(a,b)]</syntaxhighlight> <syntaxhighlight lang="Haskell" class="myDark"> *Main> zipThem [1,2,3] "ABCD" [(1,'A'),(2,'B'),(3,'C')] </syntaxhighlight> <div class="mw-collapsible mw-collapsed" data-collapsetext="Hide solution" data-expandtext="Show solution"> <syntaxhighlight lang="Haskell"> zipThem:: [a] -> [b] -> [(a,b)] zipThem (x:xs) (y:ys) = (x,y) : zipThem xs ys zipThem _ _ = [] </syntaxhighlight> [[File:Tryit.png|center|60px|Try it!|link=https://rextester.com/BVU17842]] </div> <div style="clear:both"></div> * Create a function that compute Cartesian product of two vectors. <syntaxhighlight lang="Haskell">dotProduct :: [a] -> [b] -> [(a,b)]</syntaxhighlight> <syntaxhighlight lang="Haskell" class="myDark"> *Main> dotProduct [1..4] "ABC" [(1,'A'),(1,'B'),(1,'C'),(2,'A'),(2,'B'),(2,'C'),(3,'A'),(3,'B'),(3,'C'),(4,'A'),(4,'B'),(4,'C')] </syntaxhighlight> <div class="mw-collapsible mw-collapsed" data-collapsetext="Hide solution" data-expandtext="Show solution"> <syntaxhighlight lang="Haskell"> dotProduct :: [a] -> [b] -> [(a,b)] dotProduct [] _ = [] dotProduct (x:xs) ys = tmp ys ++ dotProduct xs ys where tmp [] = [] tmp (b:bs) = (x,b) : tmp bs dotProduct' :: [a] -> [b] -> [(a,b)] dotProduct' xs ys = [(x,y)|x<-xs, y<-ys] dotProduct'' :: [a] -> [b] -> [(a,b)] dotProduct'' x y = zip (concat (map (replicate (length y)) x)) (concat (replicate (length x) y)) </syntaxhighlight> [[File:Tryit.png|center|60px|Try it!|link=https://rextester.com/BVU17842]] </div> <div style="clear:both"></div> * Create a function that computes n-th number in the Fibonacci sequence. The function should use tuples in the solution. <div style="float: right"> [[File:Video logo.png|80px|link=https://youtu.be/Sge0DXXI36k]]</div> <syntaxhighlight lang="Haskell">fibonacci :: Int -> Int</syntaxhighlight> <syntaxhighlight lang="Haskell" class="myDark"> *Main> fibonacci 12 144 </syntaxhighlight> <div class="mw-collapsible mw-collapsed" data-collapsetext="Hide solution" data-expandtext="Show solution"> <syntaxhighlight lang="Haskell"> fibonacci :: Int -> Int fibonacci n = fst (tmp n) where fibStep (a,b) = (b,a+b) tmp 0 = (0,1) tmp x = fibStep (tmp (x-1)) </syntaxhighlight> [[File:Tryit.png|center|60px|Try it!|link=https://rextester.com/BVU17842]] </div> <div style="clear:both"></div> == High-order functions == * Create a function that takes a string and converts all characters to upper case letters. <syntaxhighlight lang="Haskell">allToUpper :: String -> String</syntaxhighlight> <syntaxhighlight lang="Haskell" class="myDark"> *Main> allToUpper "aAbc" "AABC" </syntaxhighlight> <div class="mw-collapsible mw-collapsed" data-collapsetext="Hide solution" data-expandtext="Show solution"> <syntaxhighlight lang="Haskell"> import Data.Char allToUpper :: String -> String allToUpper xs = [toUpper x |x<-xs] allToUpper' :: String -> String allToUpper' xs = map toUpper xs </syntaxhighlight> [[File:Tryit.png|center|60px|Try it!|link=https://rextester.com/BVU17842]] </div> <div style="clear:both"></div> * Implement the [https://en.wikipedia.org/wiki/Quicksort <code>quicksort</code>] algorithm. As a pivot use always the first element in the list. For dividing the list, use the function <code>filter</code>. <div style="float: right"> [[File:Video logo.png|80px|link=https://youtu.be/Sj8cbRv89To]]</div> <syntaxhighlight lang="Haskell">quicksort :: (Ord a) => [a] -> [a]</syntaxhighlight> <syntaxhighlight lang="Haskell" class="myDark"> *Main> filter (<5) [1..10] [1,2,3,4] </syntaxhighlight> <syntaxhighlight lang="Haskell" class="myDark"> *Main> quicksort [1,5,3,7,9,5,2,1] [1,1,2,3,5,5,7,9] </syntaxhighlight> <div class="mw-collapsible mw-collapsed" data-collapsetext="Hide solution" data-expandtext="Show solution"> <syntaxhighlight lang="Haskell"> quicksort :: (Ord a) => [a] -> [a] quicksort [] = [] quicksort (x:xs) = let lp = filter (< x) xs rp = filter (>= x) xs in quicksort lp ++ [x] ++ quicksort rp </syntaxhighlight> [[File:Tryit.png|center|60px|Try it!|link=https://rextester.com/BVU17842]] </div> <div style="clear:both"></div> =Additional exercises= * Create a function that removes the first occurrence of a given element from a list. <syntaxhighlight lang="Haskell">removeOne :: Eq a => a -> [a] -> [a]</syntaxhighlight> <syntaxhighlight lang="Haskell" class="myDark"> *Main> removeOne 4 [1,4,6,8,4,5,4,7] [1,6,8,4,5,4,7] *Main> removeOne 'e' "Ahoj" "Ahoj" </syntaxhighlight> * Create a function that removes all occurrences of a given element from a list. <syntaxhighlight lang="Haskell">removeAll :: Eq a => a -> [a] -> [a]</syntaxhighlight> <syntaxhighlight lang="Haskell" class="myDark"> *Main> removeAll 4 [1,4,6,8,4,5,4,7] [1,6,8,5,7] *Main> removeAll 'e' "Ahoj" "Ahoj" </syntaxhighlight> * Create your own implementation of the [http://zvon.org/other/haskell/Outputprelude/replicate_f.html <code>replicate</code>] function. <syntaxhighlight lang="Haskell">replicate' :: Int -> a -> [a]</syntaxhighlight> <syntaxhighlight lang="Haskell" class="myDark"> *Main> replicate' 4 8 [8,8,8,8] </syntaxhighlight> * Create a function that realizes the left rotation of a list by n elements. Function [http://zvon.org/other/haskell/Outputprelude/iterate_f.html <code>iterate</code>] might be helpful. <syntaxhighlight lang="Haskell">rotateLeftN :: [a] -> Int -> [a]</syntaxhighlight> <syntaxhighlight lang="Haskell" class="myDark"> *Main> rotateLeftN [1,2,3,4,5] 2 [3,4,5,1,2] *Main> rotateLeftN [1,2,3,4,5] 6 [2,3,4,5,1] </syntaxhighlight> * Create a function that realizes the right rotation of a list by n elements. <syntaxhighlight lang="Haskell">rotateRightN :: [a] -> Int -> [a]</syntaxhighlight> <syntaxhighlight lang="Haskell" class="myDark"> *Main> rotateRightN [1,2,3,4,5] 2 [4,5,1,2,3] *Main> rotateRightN [1,2,3,4,5] 6 [5,1,2,3,4] </syntaxhighlight> * Create function alternate, which interleaves two lists into one, alternating between elements taken from the first list and elements from the second. <syntaxhighlight lang="Haskell">alternate :: [a] -> [a] -> [a]</syntaxhighlight> <syntaxhighlight lang="Haskell" class="myDark"> *Main> alternate [1,2,3] [4,5,6] [1,4,2,5,3,6] *Main> alternate [1,2] [4,5,6] [1,4,2,5,6] *Main> alternate [1,2,3] [4] [1,4,2,3] *Main> alternate [1,2,3] [] [1,2,3] </syntaxhighlight> * Use filter to create a non-recursive function that takes a list of integers as input and returns a list of those that are even and greater than 7. <syntaxhighlight lang="Haskell">filterEvenGt7 :: [Int] -> [Int]</syntaxhighlight> <syntaxhighlight lang="Haskell" class="myDark"> *Main> filterEvenGt7 [1,2,6,9,10,3,12,8] [10,12,8] *Main> filterEvenGt7 [5,2,6,19,129] [] </syntaxhighlight> * Create a function that splits a list of numbers into a list of triples. Extra elements should be forgotten. <syntaxhighlight lang="Haskell">makeTriples :: [a] -> [(a,a,a)]</syntaxhighlight> <syntaxhighlight lang="Haskell" class="myDark"> *Main> makeTriples [1,2,3,4,5,6,7,8,9] [(1,2,3),(4,5,6),(7,8,9)] *Main> makeTriples [1,2,3,4,5,6,7,8,9,10,11] [(1,2,3),(4,5,6),(7,8,9)] </syntaxhighlight> * Create a function that inserts an element into a list on the specific index. <syntaxhighlight lang="Haskell">insertOnIndex :: [a] -> a -> Int -> [a]</syntaxhighlight> <syntaxhighlight lang="Haskell" class="myDark"> *Main> insertOnIndex [4,5,6,7,8,9,10] 100 0 [100,4,5,6,7,8,9,10] *Main> insertOnIndex [4,5,6,7,8,9,10] 100 3 [4,5,6,100,7,8,9,10] *Main> insertOnIndex [4,5,6,7,8,9,10] 100 6 [4,5,6,7,8,9,100,10] </syntaxhighlight> * Create a function that joins the list of lists into one list using a separator. <syntaxhighlight lang="Haskell">join :: [[a]] -> a -> [a]</syntaxhighlight> <syntaxhighlight lang="Haskell" class="myDark"> *Main> join ["I","love","functional","programming"] ' ' "I love functional programming" *Main> join [[1,2,3],[4,5],[6,7,8],[9]] 0 [1,2,3,0,4,5,0,6,7,8,0,9] </syntaxhighlight>
Navigation menu
Personal tools
English
Log in
Namespaces
Special page
Variants
Views
More
Search
Main page
Education
Functional programming
Functional programming - presentations
Functional programming - laboratories
Programming Languages and Compilers
Practical Functional Programming
History Entries
Programming paradigms
C#
Tools
Special pages