टी एल; डीआर: नहीं। आधुनिक लिस्प प्रणालियों में पहले लिस्प की तुलना में कई अधिक प्राइमेटिव हैं और प्रत्येक नए आदिम डेटा प्रकार के लिए एक नए प्राइमेटिव की आवश्यकता है।
पहले लिस्प में संख्याएं नहीं थीं लेकिन यह पूर्ण हो रही थी। इसका मतलब है कि यह किसी भी अन्य भाषा में संभव है कि गणना कर सकते हैं, लेकिन इसका मतलब यह नहीं है कि ऐसा करना व्यावहारिक होगा। नकल करने के लिए संख्या मुश्किल नहीं थी, लेकिन गणना धीमी थी। आज धीमी अंकगणित डेटिंग पूर्व लिस्प 1.5 के बारे में अफवाहें हैं।
जब मैंने अपना पहला लिस्पी दुभाषिया बनाया तो मैं संख्याओं के लिए ज्यादा परवाह नहीं कर सका। यह वास्तव में एक दुभाषिया का एक दिलचस्प पहलू नहीं है। मैं फिर भी एक उदाहरण के रूप fibonacci
को लागू किया था और यह कि यह कैसा दिखता है जैसे:
;; This is NOT Common Lisp code. It's Zozotez
(setq + (lambda (x y)
(if x (cons (car x)
(+ (cdr x) y))
y)))
(setq - (lambda (z w)
(if w (- (cdr z)
(cdr w))
z)))
(setq fibonacci
(lambda (n a1 a2)
(if n
(fibonacci (- n '(1))
a2
(+ a2 a1))
a1)))
(fibonacci '(1 1 1 1 1 1 1 1 1)() '(1))
; ==> (1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1)
कोई नंबर नहीं!(1
मेरी भाषा में एक प्रतीक है इसलिए इसे उद्धृत करने की आवश्यकता है या अन्यथा इसे एक चर की तरह मूल्यांकन किया जाएगा)
वैकल्पिक संख्या प्रणाली के रूप में मैंने एक स्थितित्मक प्रणाली लागू की है, जैसा कि हम एक ही नियम के साथ संख्याएं लिखते हैं जोड़ने/गुणा करने के लिए इत्यादि। शायद लंबाई की लेट्स की तुलना में तेज़ एक तेज़ है लेकिन अधिक जटिल बनाना है।
यदि लिस्प बंद हो गया है तो आप चर्च अंकों को कर सकते हैं। लैम्ब्डा कैलकुस के समान उपयोग करके आप केवल बंद होने के साथ कुछ भी गणना कर सकते हैं। आपको केवल एक आदिम, lambda
की आवश्यकता है। (फिर से, काम करने के लिए सबसे आसान नहीं)
उन सात कार्यों के साथ लिस्प में कोई संख्या नहीं है। कोई 1 और नहीं 2 है। इस प्रकार (प्लस 1 2) काम नहीं करेगा। –
यह 1 है: '(())'। और यह 2 है: '(()())'। –