Found some time to change the order of commands like I mentioned wanting to do last time.

After doing it I’ve realised I probably shouldn’t have, but seeing as how it took me a couple of months to find the time I’m not going to change it back.

It all came about because I had issues with this not scanning/reading well:

haskerdeux today moveto 2 2020-08-30

And wanted:

haskerdeux today 2 moveto 2020-08-30

But I should have probably just changed the wording:

haskerdeux today move 2 2020-08-30

Because it makes sense on all levels to have a consistent order of arguments of

haskerdeux date command [todo date]

But for craziness reasons I now am able to do:

haskerdeux today todos
haskerdeux today 2 moveto 2020-08-30

By using some guards to flip the order of commands if needed:

main = do
	(date:number_or_command:argList) <- getArgs

--[...]

	let command | isDigit $ head number_or_command = head argList
	            | otherwise = number_or_command
	
	let args | isDigit $ head number_or_command = number_or_command : (tail argList)
	         | otherwise = argList
	
	token <- login
	dispatch command (token, todos_date:args)

With no need to change the rest of the programme. Yay for more bad Haskell.