summaryrefslogtreecommitdiffstats
path: root/AufgabeFFP7.hs
diff options
context:
space:
mode:
Diffstat (limited to 'AufgabeFFP7.hs')
-rw-r--r--AufgabeFFP7.hs17
1 files changed, 9 insertions, 8 deletions
diff --git a/AufgabeFFP7.hs b/AufgabeFFP7.hs
index 099eda8..e2a7d65 100644
--- a/AufgabeFFP7.hs
+++ b/AufgabeFFP7.hs
@@ -20,11 +20,12 @@ insert c (cur, buf) = (min (length buf + 1) (max (cur + 1) 1), buf1 ++ [c] ++ bu
20-- delete character before cursor 20-- delete character before cursor
21delete :: Buffer -> Buffer 21delete :: Buffer -> Buffer
22delete (cur, buf) 22delete (cur, buf)
23 | buf2 == "" = (min cur (length buf1), buf1) 23 | buf2 == "" = (min newCur (length buf1), buf1)
24 | cur < 0 = (0, buf) 24 | newCur < 0 = (0, buf)
25 | otherwise = (cur, buf1 ++ tail buf2) 25 | otherwise = (newCur, buf1 ++ tail buf2)
26 where 26 where
27 (buf1, buf2) = splitAt cur buf 27 newCur = cur - 1
28 (buf1, buf2) = splitAt newCur buf
28 29
29-- move cursor left one character 30-- move cursor left one character
30left :: Buffer -> Buffer 31left :: Buffer -> Buffer
@@ -52,22 +53,22 @@ emptyI = ("", "")
52 53
53-- insert character before cursor 54-- insert character before cursor
54insertI :: Char -> BufferI -> BufferI 55insertI :: Char -> BufferI -> BufferI
55insertI c (beforeC, afterC) = ([c] ++ beforeC, afterC) 56insertI c (beforeC, afterC) = (c:beforeC, afterC)
56 57
57-- delete character before cursor 58-- delete character before cursor
58deleteI :: BufferI -> BufferI 59deleteI :: BufferI -> BufferI
59deleteI (beforeC, "") = (beforeC, "") 60deleteI (beforeC, "") = (beforeC, "")
60deleteI (beforeC, c:afterC) = (beforeC, afterC) 61deleteI (c:beforeC, afterC) = (beforeC, afterC)
61 62
62-- move cursor left one character 63-- move cursor left one character
63leftI :: BufferI -> BufferI 64leftI :: BufferI -> BufferI
64leftI ("", afterC) = ("", afterC) 65leftI ("", afterC) = ("", afterC)
65leftI (c:beforeC, afterC) = (beforeC, [c] ++ afterC) 66leftI (c:beforeC, afterC) = (beforeC, c:afterC)
66 67
67-- move cursor right one character 68-- move cursor right one character
68rightI :: BufferI -> BufferI 69rightI :: BufferI -> BufferI
69rightI (beforeC, "") = (beforeC, "") 70rightI (beforeC, "") = (beforeC, "")
70rightI (beforeC, c:afterC) = ([c] ++ beforeC, afterC) 71rightI (beforeC, c:afterC) = (c:beforeC, afterC)
71 72
72-- is cursor at left end? 73-- is cursor at left end?
73atLeftI :: BufferI -> Bool 74atLeftI :: BufferI -> Bool