I've just tried it:
-------------------------------
newLISP v.10.5.1 32-bit on Win32 IPv4/6 libffi, options: newlisp -h
> (define (D:foo x y) (+ x y))
(lambda (x y) (+ x y))
> (D:foo 3 5)
8
>
-------------------------------
However, if D is already defined as something else, it fails. I think that's reasonable.
This is what I did after the above test:
------------------
> (delete 'D)
true
> (D:foo 3 5) <----------- check if it's gone
ERR: context expected : D <----------- Yes, it's gone
>
>
> (set 'D 0)
0
> D
0
> (define (D:foo x y) (+ x y))
ERR: context expected in function define : D <----------- D already exists as something else
>
---------------------------------
John