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.

giantcabbage 25 days ago:

(list) is already returning an empty mutable list - see comment in https://ministry.kronosaur.com/record.hexm?id=104332

wolfy 25 days ago:

Ok confirmed thats already working! I'll close this out, probably just misread the console last night