From 2e27b9c40e78da4acfc659ca096b4fced68f3cc6 Mon Sep 17 00:00:00 2001 From: manuel Date: Tue, 22 May 2012 00:00:11 +0200 Subject: first part of part 1 of exercise 7 --- AufgabeFFP7.hs | 28 +++++++++++++++++++++------- 1 file changed, 21 insertions(+), 7 deletions(-) diff --git a/AufgabeFFP7.hs b/AufgabeFFP7.hs index 8f2a7c8..c9454a5 100644 --- a/AufgabeFFP7.hs +++ b/AufgabeFFP7.hs @@ -8,25 +8,39 @@ import Test.QuickCheck type Buffer = (Int, String) -- the empty buffer ---TODO empty :: Buffer +empty :: Buffer +empty = (0, "") -- insert character before cursor ---TODO insert :: Char -> Buffer -> Buffer +insert :: Char -> Buffer -> Buffer +insert c (cur, buf) = (cur, buf1 ++ [c] ++ buf2) + where + (buf1, buf2) = splitAt cur buf -- delete character before cursor ---TODO delete :: Buffer -> Buffer +delete :: Buffer -> Buffer +delete (cur, buf) + | buf2 == [] = (min cur (length buf1), buf1) + | cur < 0 = (cur, buf) + | otherwise = (cur, buf1 ++ tail buf2) + where + (buf1, buf2) = splitAt cur buf -- move cursor left one character ---TODO left :: Buffer -> Buffer +left :: Buffer -> Buffer +left (cur, buf) = (min (length buf) (max (cur - 1) 0), buf) -- move cursor right one character ---TODO right :: Buffer -> Buffer +right :: Buffer -> Buffer +right (cur, buf) = (max 0 (min (cur + 1) (length buf)), buf) -- is cursor at left end? ---TODO atLeft :: Buffer -> Bool +atLeft :: Buffer -> Bool +atLeft (cur, buf) = cur == 0 -- is cursor at right end? ---TODO atRight :: Buffer -> Bool +atRight :: Buffer -> Bool +atRight (cur, buf) = cur == length buf -------------------------------------------------------------------------------- -- cgit v1.2.3