Haskell Programlama Örnek Çözümler

Haskell dilinin anlaşılması için yazılmış birkaç tane örnek kodu derledim, üniversitede dersime giren hocanın karmaşık bir şekilde verdiği bu notları sınava çalışmak için tek tek ayırarak okunması kolay bir hale getirmeyi amaçladım ve düzenlemiş olduğum haskell kodlarını  da herkesle paylaşma kararı aldım :) kodları okuyunca bile haskell hakkında bilgi sahibi olacağınıza inanıyorum, iyi çalışmalar :)

-- 1 ile 10 arasındaki sayıların küp'ünü alma --

pow3List = [3^n | n <- [1..10]]

--TUPLES--
randTuple = (1,"Random Tuple")
bobSmith = ("Bob Smith", 52)
bobsName = fst bobSmith
bobsAge = snd bobSmith

-- iki sayıyı toplama --

topla :: Int -> Int -> Int
topla x y = x + y

-- iki li olarak sayı toplama

toplaTuples :: (Int, Int) -> (Int, Int) -> (Int, Int)
toplaTuples (x1,y1) (x2,y2) = (x1+x2,y1+y2)

--PATTERN MATCHING--
lucky :: (Integral a) => a -> String
lucky 7 = "LUCKY NUMBER SEVEN!"
lucky x = "Sorry, you're out of luck, pal!"

sayMe :: (Integral a) => a -> String
sayMe 1 = "One!"
sayMe 2 = "Two!"
sayMe 3 = "Three!"
sayMe 4 = "Four!"
sayMe 5 = "Five!"
sayMe x = "Not between 1 and 5"

-- benzer örnek --
yasKac :: Int -> String
yasKac 16 = "Sen ehliyet alabilirsin"
yasKac 18 = "Sen oy kullanabilirsin"
yasKac 21 = "Sen bir yetiskinsin"
yasKac x = "Onemi yok"

-- faktöriyel --
factorial :: (Integral a) => a -> a
factorial 0 = 1
factorial n = n * factorial (n - 1)

charName :: Char -> String
charName 'a' = "Albert"
charName 'b' = "Broseph"
charName 'c' = "Cecil"

--GUARDS--
--patterns are a way of making sure a value conforms to some form and deconstructing it
--guards are a way of testing whether some property of a value are true or false

sayMe' :: (Integral a) => a -> String
sayMe' n
	| n < 0 = "Negative"
	| n == 0 = "Zero"
	| otherwise = "Positive"

--benzer örnek

bmiTell :: (RealFloat a) => a -> String
bmiTell bmi
 | bmi <= 18.5 = "You're underweight, you emo, you!"
 | bmi <= 25.0 = "You're supposedly normal. Pffft, I bet you're ugly!"
 | bmi <= 30.0 = "You're fat! Lose some weight, fatty!"
 | otherwise = "Congratulations!"

--benzer örnek

whatGrade :: Int -> String
whatGrade age
	| (age >= 5) && (age <= 6) = "Anaokulu"
	| (age > 6) && (age <= 10) = "Ilkokul"
	| (age > 10) && (age <= 14) = "Ortaokul"
	| (age > 14) && (age <= 18) = "Lise"
	| otherwise = "Universite"

--A guard is basically a boolean expression

myCompare :: (Ord a) => a -> a -> Ordering
a `myCompare` b
    | a > b     = GT
    | a == b    = EQ
    | otherwise = LT

Yapılan Yorumlar
Erdem OFLAZ

Bir mum, diğer mumu tutuşturmakla ışığından bir şey kaybetmez.
 Kategoriler
 Popüler yazılar