Re: How do nim users who have some proficiency in Lisp compare the two?

2019-09-28 Thread kaushalmodi
> How do nim users who have some proficiency in Lisp compare the two?

As @Libman said, they are quite different. But you do see hints of Lisp in Nim 
here and there. Some examples: the way the AST parsing of Nim happens, and that 
it can be represented as a Lisp expression (See 
[lispRepr](https://nim-lang.github.io/Nim/macros#lispRepr%2CNimNode)), Nim 
templates can be redefined as you can do lisp expressions, you can easily 
introspect the types of variables and procs, as you can do in lisp. I even 
started this fun project [elnim](https://github.com/kaushalmodi/elnim).

> Are there any Lisp developers here who have used both in earnest?

I got exposed to lisp as I use Emacs and I loove hacking in Emacs-Lisp to make 
Emacs do whatever I want. And I have used Nim to replace bash and Python for 
me. More importantly, it has found a unique spot at my work where I use Nim as 
an interfacing language between C/C++ and SystemVerilog.

\---

Hey @rayman22201, thanks for the mention :) Yep, my website source is in Org 
mode. 


Re: How do nim users who have some proficiency in Lisp compare the two?

2019-09-25 Thread rayman22201
There are a few lispers around. One of the biggest is @kaushalmodi. He is often 
on irc. I would ask him there. He has a great Nim notes page here: 
[https://scripter.co/notes/nim](https://scripter.co/notes/nim)/ (His entire 
website is generated from an org-mode file I believe)

I am a novice at lisp but I have played with a few flavors. Nim macros have a 
similar feel in some ways, but very different in others.

Just like lisp, macros essentially act as functions over the AST. But, Nim is a 
strongly typed imperative language, and as such, the AST nodes that you are 
operating on are much more "rich" to accommodate this. It's not just lists all 
the way down. It feels more like building a small plugin to a traditional 
compiler. Personally, I find writing macros in Nim to be more similar to 
building a DSL in Haskell, or ML.


Re: How do nim users who have some proficiency in Lisp compare the two?

2019-09-25 Thread Libman
Really the only thing that Nim and Lisp have in common is very powerful 
metaprogramming. Aside from that - it's a very strange comparison...

Lisp is a family of programming languages, almost all of which are scripting 
languages without static typing. Most common Lisp implementations (ex. SBCL, 
and some might count Clojure) cannot produce lean high-performance executables, 
which is a big strength for Nim. [Kostya's 
benchmarks](https://github.com/kostya/benchmarks) show Nim being much more 
efficient than Lisp variants Racket and Chez Scheme.

Lisp is especially known for its peculiar 
[S-expression]([https://en.wikipedia.org/wiki/S-expression](https://en.wikipedia.org/wiki/S-expression))
 syntax, which now (adding up all Lisp and Scheme flavors) has less than 1% 
[market share](https://www.tiobe.com/tiobe-index/). A small minority of 
programmers like it, but the vast majority don't, and would probably find it 
difficult to read your code or contribute to your project. Nim's syntax 
philosophy is shared with Python (soon to become undisputed as the most popular 
scripting language), and so it's less peculiar than Lisp to people coming from 
other top programming languages.

Related: [Make a Lisp in Nim](https://hookrace.net/blog/make-a-lisp-in-nim/) 
(2015)