zulme karşı mukavemet!
Süper Üye
[font='Titillium Web', sans-serif]Haskell programlama dilinde yazılmış bu fonksiyonda unix sistem çağrılarını (Unix System Calls) yapabilen bir uygulama yapılmıştır. Unix'te varolan ls fonksiyonunu,cp fonksiyonunu, cat fonksiyonunu, mv fonksiyonunu, rm fonksiyonunu, wc fonksiyonunu, cd fonksiyonunu gerçekleyen tam bir program yazılmıştır.
Ör Komutlar:[/FONT]
Ör Komutlar:[/FONT]
Kod:
ls
$ > ls C:
$ > cp dene.hs C:\\celal.txt
$ > cat dene.hs
$>mv C:\\celal.txt D:\\celal.txt
$>rm D:\\dene
$>wc D:\\dene.hs
$>cd C:
Program Kodu :
import System.IO
import System.Directory
unixcall =
getContents >>= \ satirlar ->
calistir (lines satirlar)
calistir (b:bs) =
fonk ([a |a <-words b]) >>
putStr "$>" >>
calistir bs
fonk (l:[])
| l=="ls" = getCurrentDirectory >>= \dir ->
dirlist dir
fonk (l:ls)
| l=="ls" = dirlist (head ls)
| l=="cp" = kopyala (head ls) (head (tail ls))
| l=="cat" = icerikgoster (head ls)
| l=="mv" = dosyagit(head ls) (head (tail ls))
| l=="rm" = klasorsil(head ls)
| l=="wc" = karaktersay (head ls)
| l=="cd" = dizinsec (head ls)
dirlist a =
getCurrentDirectory >>= \dir ->
getDirectoryContents a >>= \filelist ->
setCurrentDirectory a >>
dosyalariekranayazdir filelist >>
setCurrentDirectory dir >>
return ()
dosyalariekranayazdir (l:[]) = putStrLn l
dosyalariekranayazdir (l:ls) =
putStrLn l >>
dosyalariekranayazdir ls
kopyala a b =
openFile a ReadMode >>= \acilacak ->
openFile b WriteMode >>= \yazilacak ->
hGetContents acilacak >>= \icerik ->
hPutStr yazilacak icerik >>
hClose acilacak >>
hClose yazilacak
icerikgoster a=
openFile a ReadMode >>= \acilacak ->
hGetContents acilacak >>= \icerik ->
putStr icerik
dosyagit a b=
openFile a ReadMode >>= \acilacak ->
openFile b WriteMode >>= \yazilacak ->
hGetContents acilacak >>= \icerik ->
hPutStr yazilacak icerik >>
removeFile a
klasorsil a= removeDirectory a
karaktersay a=
openFile a ReadMode >>= \acilacak ->
hGetContents acilacak >>= \icerik ->
putStrLn ("Karakter Sayisi: "++(show(length icerik))) >>
putStrLn ("Kelime Sayisi: "++(show(length(words icerik)))) >>
putStrLn ("Satir Sayisi: "++(show(length(lines icerik))))
dizinsec a= setCurrentDirectory a