Yes, its not in-line with classic lisp, but tlisp is not lisp, and tlisp needs to serve the needs (efficiency and feature set) of the game engine + content first and foremost than to adhere to any external language's conventions.
Options are:
1A) (list) -> returns () instead of Nil ;; this is probably pretty safe, because why would anyone be using (list) instead of Nil to get Nil?
1B) () -> returns () instead of Nil ;; this is maybe safe, but technically someone might have used it as shorthand instead of Nil
2) (mutableList) -> returns () instead of Nil ;; can be named something else, but the idea is that its a new native function that returns an empty list
Why do we need this?
Currently the following must be done to get a mutable list
(setq makeMutableList (lambda Nil (block (theList (list 1)) (lnkRemove theList 1))))
(makeMutableList) -> ()
Also note that if we were trying to be like proper classic lisp, returning empty mutable lists would never happen - but stuff (TAI, TSB, DDR, probably stuff by other people and in the base game) already depends on this exact functionality, and again - the needs of the content & the game engine come first, so reverting this to make it like classic Lisp isnt a viable choice.
(list)
is already returning an empty mutable list - see comment in https://ministry.kronosaur.com/record.hexm?id=104332
Ok confirmed thats already working! I'll close this out, probably just misread the console last night