SlideShare a Scribd company logo
Sugaring Lisp
for the 21st
Century
Vsevolod Dyomkin
@vseloved
European Lisp Symposium
2016-05-09
Common Complaints
about Common Lisp
(from the POV of outsiders)
* No libraries
* No threads, sockets,
whatever in the standard
* “Historical cruft” (poor names,
verbosity, inconsistency, lack
of modularity, not generic enough
etc.)
“Modernization”
Efforts
* CDR https://common-lisp.net/project/cdr/
Common Lisp Document Repository
* cltl3 http://ilc2009.scheming.org/node/48
“Codifying Modern Common Lisp”
* cl21 https://github.com/cl21/cl21
“Common Lisp in the 21st Century”
Beyond Utilities
Default solution utilities–
(http://cliki.net/utilities - 36
entries of which at least 10+ are
general-purpose ones).
Most don't go far enough added–
value is only convenience, not
language evolution and growth
RUTILS
est. 2009
14 core + 7 contrib packages
~ 250 exported symbols
(cf. ~1000 symbols in package CL)
* backward-compatible
* practical
* modular
* pro-choice
https://github.com/vseloved/rutils
(defmethod select-transition ((parser amrparser) graph)
(with (((stack buffer) @ parser))
(s0 (? stack 0))
(b0 (? buffer 0)))
(flat-map (lambda (k)
(unless (or (in# (pair k b0) graph)
(in# (pair b0 k) graph))
(let ((fs (append common-fs
(extract-fs parser
nil s0 b0))))
(mapcar ^(make-trans :fn % :fs fs)
'(amr:reattach
amr:reenter)))))
(set-difference @parser.tokens
(list nil s0 b0))))))
CL-USER> (select-transition (make 'parser) #h(equal))
Example Code
How You Can Benefit
* Use it
;; conventional way
(ql:quickload :rutils)
(use-package :rutils)
(named-readtables:in-readtable rutils-readtable)
;; radical way
(ql:quickload :rutilsx)
(use-package :rutilsx)
(named-readtables:in-readtable rutilsx-readtable)
How You Can Benefit
* Use parts of it
(use-package :rutilsx.threading)
* Borrow ideas ...like cl21 did
usually called cross-
pollination
Open Issues
How to gracefully handle:
* map/mapcar
* slot-value names across
packages in @obj.slot

More Related Content

PDF
Java/Scala Lab: Руслан Шевченко - Implementation of CSP (Communication Sequen...
PDF
Lisp(Lots of Irritating Superfluous Parentheses)
PDF
Clojure Intro
PPTX
A brief introduction to lisp language
PDF
Learn a language : LISP
KEY
Playing Nice with Others
PDF
Taming Rich GML with Stetl - FOSS4G 2013 Nottingham
PDF
Integrating R with C++: Rcpp, RInside and RProtoBuf
Java/Scala Lab: Руслан Шевченко - Implementation of CSP (Communication Sequen...
Lisp(Lots of Irritating Superfluous Parentheses)
Clojure Intro
A brief introduction to lisp language
Learn a language : LISP
Playing Nice with Others
Taming Rich GML with Stetl - FOSS4G 2013 Nottingham
Integrating R with C++: Rcpp, RInside and RProtoBuf

What's hot (20)

PDF
Detecting Deadlock, Double-Free and Other Abuses in a Million Lines of Linux ...
PDF
Stetl for INSPIRE Data Transformation
PDF
Geospatial ETL with Stetl - GeoPython 2016
PDF
Parallel computing with GPars
KEY
Linuxconf 2011 parallel languages talk
PDF
PDF
5 Minute Intro to Stetl
PDF
PyWPS Development restart
PDF
My talk about Tarantool and Lua at Percona Live 2016
KEY
ErLounge SF/Bay: 2010.01.12 Christian Westbrook / CoTweet
PPT
Advance LISP (Artificial Intelligence)
PDF
Lua and its Ecosystem
PDF
Introduction to Clime
PDF
Getting Started with Go
PDF
From 0 to mine sweeper in pyside
PDF
Practicing Python 3
PDF
Quines—Programming your way back to where you were
PDF
Golang execution modes
PDF
Learning Python from Data
PPTX
Prolog & lisp
Detecting Deadlock, Double-Free and Other Abuses in a Million Lines of Linux ...
Stetl for INSPIRE Data Transformation
Geospatial ETL with Stetl - GeoPython 2016
Parallel computing with GPars
Linuxconf 2011 parallel languages talk
5 Minute Intro to Stetl
PyWPS Development restart
My talk about Tarantool and Lua at Percona Live 2016
ErLounge SF/Bay: 2010.01.12 Christian Westbrook / CoTweet
Advance LISP (Artificial Intelligence)
Lua and its Ecosystem
Introduction to Clime
Getting Started with Go
From 0 to mine sweeper in pyside
Practicing Python 3
Quines—Programming your way back to where you were
Golang execution modes
Learning Python from Data
Prolog & lisp
Ad

Similar to Sugaring Lisp for the 21st Century (16)

PDF
Linux rumpkernel - ABC2018 (AsiaBSDCon 2018)
PDF
Introducing Plan9 from Bell Labs
PDF
Unix++: Plan 9 from Bell Labs
PPTX
PDF
OSCON: System software goes weird
PPT
02_History of company and computer in Pakistan
PDF
Lisp for Python Programmers
ODP
Not so brief history of Linux Containers
ODP
Not so brief history of Linux Containers - Kir Kolyshkin
PDF
Devfest kyoto2018 Lisp-Koans
PPTX
A Tour of Open Source on the Mainframe
PDF
PDF
The Lives of Others: Open-Source Development Practices Elsewhere
PDF
Moby and linux kit, what to expect - Lorenzo Fontana, DevOps Expert at Kiratech
PDF
Containerday17 Moby-linuxkit-DockerCon-2017-announcements
PDF
Introduction to Linux with Focus on Raspberry Pi
Linux rumpkernel - ABC2018 (AsiaBSDCon 2018)
Introducing Plan9 from Bell Labs
Unix++: Plan 9 from Bell Labs
OSCON: System software goes weird
02_History of company and computer in Pakistan
Lisp for Python Programmers
Not so brief history of Linux Containers
Not so brief history of Linux Containers - Kir Kolyshkin
Devfest kyoto2018 Lisp-Koans
A Tour of Open Source on the Mainframe
The Lives of Others: Open-Source Development Practices Elsewhere
Moby and linux kit, what to expect - Lorenzo Fontana, DevOps Expert at Kiratech
Containerday17 Moby-linuxkit-DockerCon-2017-announcements
Introduction to Linux with Focus on Raspberry Pi
Ad

More from Vsevolod Dyomkin (19)

PDF
NLP Project Full Circle
PDF
Lisp in a Startup: the Good, the Bad, and the Ugly
PDF
The State of #NLProc
PDF
Loading Multiple Versions of an ASDF System in the Same Lisp Image
PDF
NLP in the WILD or Building a System for Text Language Identification
PDF
NLP Project Full Cycle
PDF
Crash Course in Natural Language Processing (2016)
PDF
Can functional programming be liberated from static typing?
PDF
Crash-course in Natural Language Processing
PDF
Lisp Machine Prunciples
PDF
Natural Language Processing in Practice
PDF
PDF
Lisp как универсальная обертка
PDF
Aspects of NLP Practice
PDF
Practical NLP with Lisp
ODP
Tedxkyiv communication guidelines
ODP
Новые нереляционные системы хранения данных
ODP
Чему мы можем научиться у Lisp'а?
PPT
Экосистема Common Lisp
NLP Project Full Circle
Lisp in a Startup: the Good, the Bad, and the Ugly
The State of #NLProc
Loading Multiple Versions of an ASDF System in the Same Lisp Image
NLP in the WILD or Building a System for Text Language Identification
NLP Project Full Cycle
Crash Course in Natural Language Processing (2016)
Can functional programming be liberated from static typing?
Crash-course in Natural Language Processing
Lisp Machine Prunciples
Natural Language Processing in Practice
Lisp как универсальная обертка
Aspects of NLP Practice
Practical NLP with Lisp
Tedxkyiv communication guidelines
Новые нереляционные системы хранения данных
Чему мы можем научиться у Lisp'а?
Экосистема Common Lisp

Recently uploaded (20)

PDF
Mitigating Risks through Effective Management for Enhancing Organizational Pe...
PDF
737-MAX_SRG.pdf student reference guides
PPTX
Construction Project Organization Group 2.pptx
PPTX
Engineering Ethics, Safety and Environment [Autosaved] (1).pptx
PPTX
additive manufacturing of ss316l using mig welding
PDF
BMEC211 - INTRODUCTION TO MECHATRONICS-1.pdf
PPTX
Safety Seminar civil to be ensured for safe working.
PDF
Categorization of Factors Affecting Classification Algorithms Selection
PPTX
Current and future trends in Computer Vision.pptx
PDF
The CXO Playbook 2025 – Future-Ready Strategies for C-Suite Leaders Cerebrai...
PPTX
Sustainable Sites - Green Building Construction
PDF
PPT on Performance Review to get promotions
PPTX
Foundation to blockchain - A guide to Blockchain Tech
PPTX
CARTOGRAPHY AND GEOINFORMATION VISUALIZATION chapter1 NPTE (2).pptx
DOCX
573137875-Attendance-Management-System-original
PPTX
Artificial Intelligence
PDF
null (2) bgfbg bfgb bfgb fbfg bfbgf b.pdf
PDF
Artificial Superintelligence (ASI) Alliance Vision Paper.pdf
PPT
Mechanical Engineering MATERIALS Selection
PPTX
Fundamentals of Mechanical Engineering.pptx
Mitigating Risks through Effective Management for Enhancing Organizational Pe...
737-MAX_SRG.pdf student reference guides
Construction Project Organization Group 2.pptx
Engineering Ethics, Safety and Environment [Autosaved] (1).pptx
additive manufacturing of ss316l using mig welding
BMEC211 - INTRODUCTION TO MECHATRONICS-1.pdf
Safety Seminar civil to be ensured for safe working.
Categorization of Factors Affecting Classification Algorithms Selection
Current and future trends in Computer Vision.pptx
The CXO Playbook 2025 – Future-Ready Strategies for C-Suite Leaders Cerebrai...
Sustainable Sites - Green Building Construction
PPT on Performance Review to get promotions
Foundation to blockchain - A guide to Blockchain Tech
CARTOGRAPHY AND GEOINFORMATION VISUALIZATION chapter1 NPTE (2).pptx
573137875-Attendance-Management-System-original
Artificial Intelligence
null (2) bgfbg bfgb bfgb fbfg bfbgf b.pdf
Artificial Superintelligence (ASI) Alliance Vision Paper.pdf
Mechanical Engineering MATERIALS Selection
Fundamentals of Mechanical Engineering.pptx

Sugaring Lisp for the 21st Century

  • 1. Sugaring Lisp for the 21st Century Vsevolod Dyomkin @vseloved European Lisp Symposium 2016-05-09
  • 2. Common Complaints about Common Lisp (from the POV of outsiders) * No libraries * No threads, sockets, whatever in the standard * “Historical cruft” (poor names, verbosity, inconsistency, lack of modularity, not generic enough etc.)
  • 3. “Modernization” Efforts * CDR https://common-lisp.net/project/cdr/ Common Lisp Document Repository * cltl3 http://ilc2009.scheming.org/node/48 “Codifying Modern Common Lisp” * cl21 https://github.com/cl21/cl21 “Common Lisp in the 21st Century”
  • 4. Beyond Utilities Default solution utilities– (http://cliki.net/utilities - 36 entries of which at least 10+ are general-purpose ones). Most don't go far enough added– value is only convenience, not language evolution and growth
  • 5. RUTILS est. 2009 14 core + 7 contrib packages ~ 250 exported symbols (cf. ~1000 symbols in package CL) * backward-compatible * practical * modular * pro-choice https://github.com/vseloved/rutils
  • 6. (defmethod select-transition ((parser amrparser) graph) (with (((stack buffer) @ parser)) (s0 (? stack 0)) (b0 (? buffer 0))) (flat-map (lambda (k) (unless (or (in# (pair k b0) graph) (in# (pair b0 k) graph)) (let ((fs (append common-fs (extract-fs parser nil s0 b0)))) (mapcar ^(make-trans :fn % :fs fs) '(amr:reattach amr:reenter))))) (set-difference @parser.tokens (list nil s0 b0)))))) CL-USER> (select-transition (make 'parser) #h(equal)) Example Code
  • 7. How You Can Benefit * Use it ;; conventional way (ql:quickload :rutils) (use-package :rutils) (named-readtables:in-readtable rutils-readtable) ;; radical way (ql:quickload :rutilsx) (use-package :rutilsx) (named-readtables:in-readtable rutilsx-readtable)
  • 8. How You Can Benefit * Use parts of it (use-package :rutilsx.threading) * Borrow ideas ...like cl21 did usually called cross- pollination
  • 9. Open Issues How to gracefully handle: * map/mapcar * slot-value names across packages in @obj.slot