diff options
| author | manuel <manuel@mausz.at> | 2012-05-22 00:00:11 +0200 |
|---|---|---|
| committer | manuel <manuel@mausz.at> | 2012-05-22 00:00:11 +0200 |
| commit | 2e27b9c40e78da4acfc659ca096b4fced68f3cc6 (patch) | |
| tree | 321022c561c188532b89837b3a0c6a0fac57d6a2 | |
| parent | daec0a0a7bef72bf0b0ab4462f6fba02727037cd (diff) | |
| download | ffp-2e27b9c40e78da4acfc659ca096b4fced68f3cc6.tar.gz ffp-2e27b9c40e78da4acfc659ca096b4fced68f3cc6.tar.bz2 ffp-2e27b9c40e78da4acfc659ca096b4fced68f3cc6.zip | |
first part of part 1 of exercise 7
| -rw-r--r-- | AufgabeFFP7.hs | 28 |
1 files 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 | |||
| 8 | type Buffer = (Int, String) | 8 | type Buffer = (Int, String) |
| 9 | 9 | ||
| 10 | -- the empty buffer | 10 | -- the empty buffer |
| 11 | --TODO empty :: Buffer | 11 | empty :: Buffer |
| 12 | empty = (0, "") | ||
| 12 | 13 | ||
| 13 | -- insert character before cursor | 14 | -- insert character before cursor |
| 14 | --TODO insert :: Char -> Buffer -> Buffer | 15 | insert :: Char -> Buffer -> Buffer |
| 16 | insert c (cur, buf) = (cur, buf1 ++ [c] ++ buf2) | ||
| 17 | where | ||
| 18 | (buf1, buf2) = splitAt cur buf | ||
| 15 | 19 | ||
| 16 | -- delete character before cursor | 20 | -- delete character before cursor |
| 17 | --TODO delete :: Buffer -> Buffer | 21 | delete :: Buffer -> Buffer |
| 22 | delete (cur, buf) | ||
| 23 | | buf2 == [] = (min cur (length buf1), buf1) | ||
| 24 | | cur < 0 = (cur, buf) | ||
| 25 | | otherwise = (cur, buf1 ++ tail buf2) | ||
| 26 | where | ||
| 27 | (buf1, buf2) = splitAt cur buf | ||
| 18 | 28 | ||
| 19 | -- move cursor left one character | 29 | -- move cursor left one character |
| 20 | --TODO left :: Buffer -> Buffer | 30 | left :: Buffer -> Buffer |
| 31 | left (cur, buf) = (min (length buf) (max (cur - 1) 0), buf) | ||
| 21 | 32 | ||
| 22 | -- move cursor right one character | 33 | -- move cursor right one character |
| 23 | --TODO right :: Buffer -> Buffer | 34 | right :: Buffer -> Buffer |
| 35 | right (cur, buf) = (max 0 (min (cur + 1) (length buf)), buf) | ||
| 24 | 36 | ||
| 25 | -- is cursor at left end? | 37 | -- is cursor at left end? |
| 26 | --TODO atLeft :: Buffer -> Bool | 38 | atLeft :: Buffer -> Bool |
| 39 | atLeft (cur, buf) = cur == 0 | ||
| 27 | 40 | ||
| 28 | -- is cursor at right end? | 41 | -- is cursor at right end? |
| 29 | --TODO atRight :: Buffer -> Bool | 42 | atRight :: Buffer -> Bool |
| 43 | atRight (cur, buf) = cur == length buf | ||
| 30 | 44 | ||
| 31 | -------------------------------------------------------------------------------- | 45 | -------------------------------------------------------------------------------- |
| 32 | 46 | ||
