need to write tests

This commit is contained in:
Rowan Torbitzky-Lane 2025-01-25 01:50:14 -06:00
parent c17e0df4da
commit e3cf1d2121
2 changed files with 24 additions and 0 deletions

View File

@ -7,4 +7,24 @@ instructionCharConcat :: State -> State
instructionCharConcat state@(State {_char = c1 : c2 : cs, _string = ss}) = state{_char = cs, _string = [c1, c2] : ss} instructionCharConcat state@(State {_char = c1 : c2 : cs, _string = ss}) = state{_char = cs, _string = [c1, c2] : ss}
instructionCharConcat state = state instructionCharConcat state = state
instructionCharFromFirstChar :: State -> State
instructionCharFromFirstChar state@(State {_char = cs, _string = s1 : ss}) =
if not $ null s1
then state {_char = head s1 : cs, _string = ss}
else state
instructionCharFromFirstChar state = state
instructionCharFromLastChar :: State -> State
instructionCharFromLastChar state@(State {_char = cs, _string = s1 : ss}) =
if not $ null s1
then state {_char = last s1 : cs, _string = ss}
else state
instructionCharFromLastChar state = state
instructionCharFromNthChar :: State -> State
instructionCharFromNthChar state@(State {_char = cs, _string = s1 : ss, _int = i1 : is}) =
let
index = abs i1 `mod` length s1
in
state{_char = s1 !! index : cs, _string = ss, _int = is}
instructionCharFromNthChar state = state

View File

@ -79,3 +79,7 @@ instructionStringRemoveAllString state = state
instructionStringOccurrencesOfString :: State -> State instructionStringOccurrencesOfString :: State -> State
instructionStringOccurrencesOfString state@(State {_string = s1 : s2 : ss, _int = is}) = state{_string = ss, _int = amtOccurences s1 s2 : is} instructionStringOccurrencesOfString state@(State {_string = s1 : s2 : ss, _int = is}) = state{_string = ss, _int = amtOccurences s1 s2 : is}
instructionStringOccurrencesOfString state = state instructionStringOccurrencesOfString state = state
instructionStringInsertChar :: State -> State
instructionStringInsertChar state@(State {_string = s1 : ss, _char = c1 : cs, _int = i1 : is}) = state {_string = combineString [c1] (splitAt i1 s1) : ss, _char = cs, _int = is}
instructionStringInsertChar state = state