Racket 문법의 장점과 개선 방향: 인간 중심의 프로그래밍 언어 설계를 향하여

소프트웨어는 기계가 아닌 사람이 읽기 위해 작성되어야 하며, Racket의 문법 또한 인지 부하를 줄이고 가독성을 높이는 방향으로 진화해야 합니다.

🔗 원문 보기

Racket 문법의 장점과 개선 방향: 인간 중심의 프로그래밍 언어 설계를 향하여

소프트웨어는 기계가 아닌 사람이 읽기 위해 작성되어야 하며, Racket의 문법 또한 인지 부하를 줄이고 가독성을 높이는 방향으로 진화해야 합니다.

Ruby-News

Ruby와 Lisp: 루비가 계승한 리스프의 철학과 유연성

루비의 창시자 마츠는 루비가 Perl, Smalltalk뿐만 아니라 Lisp의 영향을 받았음을 인정했으며, 특히 코드를 유연하게 조작하고 확장하는 리스프의 철학적 가치를 핵심적으로 수용했습니다.

🔗 원문 보기

Ruby와 Lisp: 루비가 계승한 리스프의 철학과 유연성

루비의 창시자 마츠는 루비가 Perl, Smalltalk뿐만 아니라 Lisp의 영향을 받았음을 인정했으며, 특히 코드를 유연하게 조작하고 확장하는 리스프의 철학적 가치를 핵심적으로 수용했습니다.

Ruby-News

@dubiousdisc wrote:
«The killer feature of Lisps is not macros or structural editing (though those are nice too). The killer feature is REPL-driven development. Writing and testing code are not separate stages; they are intertwined. It's a completely different way to program.»

The latter two sentences are true (we can add exploration to writing and testing).
I don't think that there is a _single_ killer feature, though.
For example, REPLs are available for quite a few languages nowadays, but these languages still don't "feel like" Lisp.

What is usually called homoiconicity is also important, for example, not so much by itself, but by the way it affects directly or indirectly many aspects of using a language.
A lot has been said about homoiconicity, of course, but still, let me add an illustration.
Define a quine as an expression Q in a programming language such that Q is equal to eval(Q).
Obviously, the precise representation of Q and the precise notion of equality will be language-dependent.
Now, compare a quine (in the above sense) in a Lisp to a quine in Python.

With regards to another aspect of the big topic, see also an old paper by Guy Steele called Growing a Language (or Making a Language that Can Grow, or something like that).

#ComputerProgramming
#GrowingALanguage
#Homoiconicity
#Lisp
#Programming
#ProgrammingLanguages
#Quines
#ReadEvalPrintLoop
#REPL

doing metaprogramming in javascript through babel/traverse makes me realize how brilliant lisp 'fixed point' syntax is

#js #lisp #metaprogramming #ast #sexp #homoiconicity

This is an unbirthday present for @screwlisp,
who posted earlier about quines.

To give it as a puzzle at first:

find a Python quine as a string Q such that eval(Q) == Q.

A spoiler to follow.

_________
The term "fixed point" comes to mind. And the Y combinator comes into
this picture as well; wie another day.

(Estimating Python's degree of homoiconicity is left as an exercise.)

#ComputerProgramming
#Homoiconicity
#ProgrammingPuzzle
#Puzzle
#Python
#Quine

P.P.S.

Is this The Heart of Homoiconicity™?

A rare warranted use of `eval' (Elisp):

(let ((q '((lambda (x) (list x x)) (lambda (x) (list x x)))))
(equal q (eval q)))
=> t

after
(setq lexical-binding nil)
as needed.

#Elisp
#EmacsLisp
#Homoiconicity
#Lisp
#Quines

@screwlisp

With the idea of promoting the usage of #guix and my favourite #programming language #guile #scheme I created a small project which is still in early stages, but I think with some more #love and #effort can be quite something.

https://jointhefreeworld.org/guile-show-hub/

The Guile ShowHub! Promoting all Guile projects out there! By reading from #foss Guix project source code we can tap into a plethora of information, and leverage the #homoiconicity of #lisp to directly analyze the source code and extract info.

Dear Friends of #Homoiconicity #ProgrammingTools,
https://en.wikipedia.org/wiki/Homoiconicity

Have you tried any⁉️

I have quite a few as they can be self-documenting. For example, when Curl was available for Linux and supposedly going to be open sourced, our intrepid team built and used CurlChat to communicate. 🗨️
https://en.wikipedia.org/wiki/Curl_(programming_language)

https://peace.fandom.com/wiki/CurlChat

#AI is producing #code in MANY languages. However, some of us don't have the time or capacity to use Windows, Swift or closed source money making languages to provide core-pirate/corporate centralised revenue...

I need the #security of Veilid or GROWL
https://www.forum.puppylinux.com/viewtopic.php?p=101322#p101322

Have a great day Wombles and Wumans of the cyberverses. We come in Pieces, ready assembled. Almost. ❤️

Homoiconicity - Wikipedia

Reflections on C++ Reflection | Daveed Vandevoorde - Edison Design Group

YouTube

A high schooler knows that a function is a map from the domain set \(X\) to the codomain set \(Y\), that is \(f : X \rightarrow Y\). He additionally knows that a function is also a set of ordered pairs \((x, y) \in X \times Y\), where \(𝑥 \in X\) and \(y \in Y\).

Waiving our hands furiously, we can call sets the typed data and functions between sets the code. From that point of view, the function code is just typed data, and vice versa: both are sets. And if functions are sets, then there are higher-order functions between function sets.

Over the past few decades, "popular" programming languages employed in IT have begun to adopt functional programming concepts, and with that, the higher-order functions (functionals). But to date, only FP languages—LISP, ML, Haskell, etc.—exploit the concept of #homoiconicity: code \(\equiv\) data.