Skip to content

Commit 973e862

Browse files
committed
🐛
1 parent 395b56a commit 973e862

File tree

2 files changed

+22
-16
lines changed

2 files changed

+22
-16
lines changed

.github/workflows/test.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ jobs:
55
runs-on: ubuntu-latest
66
strategy:
77
matrix:
8-
ghc: ['9.0.2', '9.4.8', '9.10.1', '9.12.2']
8+
ghc: ['9.0.2', '9.6.7', '9.10.2', '9.12.2']
99
steps:
1010
- uses: actions/checkout@v4
1111
- uses: haskell-actions/setup@v2

app/Repl.hs

Lines changed: 21 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
module Repl (runRepl) where
22

33
import Control.Applicative ((<|>))
4+
import Data.Char (isSpace)
45
import Data.List (isPrefixOf)
56
import Data.Map.Strict (Map, (!))
67
import qualified Data.Map.Strict as Map
@@ -33,23 +34,28 @@ data ReplCommand
3334
| ReplArity String
3435
deriving (Eq, Show)
3536

37+
splitFirstWord :: String -> (String, String)
38+
splitFirstWord = break isSpace . dropWhile isSpace
39+
3640
parseReplCommand :: String -> ReplCommand
3741
parseReplCommand input =
38-
case words input of
39-
("\\Q" : _) -> ReplQuit
40-
("\\Quit" : _) -> ReplQuit
41-
("\\H" : _) -> ReplHelp
42-
("\\Help" : _) -> ReplHelp
43-
("\\Mode" : "all" : _) -> ReplMode AllValues
44-
("\\Mode" : "first" : _) -> ReplMode FirstValue
45-
("\\Mode" : "last" : _) -> ReplMode LastValue
46-
("\\Mode" : "count" : _) -> ReplMode CountValues
47-
("\\Mode" : "exists" : _) -> ReplMode CheckExistence
48-
("\\Mode" : _) -> ReplShowMode
49-
("\\Limit" : rest) -> ReplLimit (unwords rest)
50-
("\\Input" : rest) -> ReplInput (unwords rest)
51-
("\\Info" : rest) -> ReplInfo (unwords rest)
52-
("\\Arity" : rest) -> ReplArity (unwords rest)
42+
case splitFirstWord input of
43+
("\\Q", _) -> ReplQuit
44+
("\\Quit", _) -> ReplQuit
45+
("\\H", _) -> ReplHelp
46+
("\\Help", _) -> ReplHelp
47+
("\\Mode", rest) ->
48+
case splitFirstWord rest of
49+
("all", _) -> ReplMode AllValues
50+
("first", _) -> ReplMode FirstValue
51+
("last", _) -> ReplMode LastValue
52+
("count", _) -> ReplMode CountValues
53+
("exists", _) -> ReplMode CheckExistence
54+
_ -> ReplShowMode
55+
("\\Limit", rest) -> ReplLimit rest
56+
("\\Input", rest) -> ReplInput rest
57+
("\\Info", rest) -> ReplInfo rest
58+
("\\Arity", rest) -> ReplArity rest
5359
_ -> ReplEval input
5460

5561
replCommandStrings :: [String]

0 commit comments

Comments
 (0)