<p>I like the idea but I’m not aware of a strong Lisp presence anywhere in bioinformatics. I think a good starting point would be the paper <a href="https://doi.org/10.1093/bib/bbw130" rel="nofollow noreferrer"><em>How the strengths of Lisp-family languages facilitate building complex and flexible bioinformatics applications</em></a> by Khomtchouk <em>&amp;al</em> (and <a href="https://news.ycombinator.com/item?id=13354035" rel="nofollow noreferrer">the Hacker News discussion</a>).</p>

<p>Excluding Clojure from consideration will unfortunately close off a great many modern resources (although I fundamentally agree with your technical reason for doing so). Apart from this, <a href="https://en.wikipedia.org/wiki/Scheme_%28programming_language%29" rel="nofollow noreferrer">Scheme</a> (in particular R7RS) is probably the most-used Lisp dialect, ahead of <a href="https://en.wikipedia.org/wiki/Common_Lisp" rel="nofollow noreferrer">Common Lisp</a>. Or at least the most actively developed one. As Pierre mentioned, there’s also <a href="https://en.wikipedia.org/wiki/GNU_Guile" rel="nofollow noreferrer">GNU Guile</a> but, to be honest, despite it being the default for GNU software tools I don’t think it’s frequently used outside GDB.</p>

<p>That said, Clojure’s startup time is <em>not</em> anywhere near 10 seconds on my system. It’s not exactly instantaneous but not much worse than other dynamic languages, despite being backed by the rather sluggish JVM.</p>

CC BY-SA 4.0
2021-05-04T17:09:49.017Z
Clojure's slow startup time is no longer thanks to Babashka: https://book.babashka.org/
Boutran
CC BY-SA 3.0
2017-12-29T16:14:01.887Z
2017-12-29T16:14:01.887Z
Konrad Rudolph
<blockquote>
  <p>Which LISP dialects are currently suitable for bioinformatics (e.g., for developing simple command-line tools)? I have the following requirements:</p>
</blockquote>

<p>I have recently pushed a PR for samtools (mostly for fun) <a href="https://github.com/samtools/samtools/pull/752" rel="nofollow noreferrer">https://github.com/samtools/samtools/pull/752</a> that uses the <strong>GNU Guile library</strong> <a href="https://www.gnu.org/software/guile/" rel="nofollow noreferrer">https://www.gnu.org/software/guile/</a></p>

<pre><code>./samtools view   -g \
   '(define read-filter (lambda (R) (and (&gt; (hts-read-length R ) 10 ) (integer? (string-contains  (hts-read-seq R) "GCCTTGGCTCTTGTTCC")))))' input.bam
</code></pre>

CC BY-SA 3.0
2017-12-28T21:10:59.133Z
2017-12-28T21:10:59.133Z
Pierre
<p>After many years of programming in Python, C/C++ and other mainstream languages, I am looking for a new language of pleasure, mainly as a part of mental hygiene. Since I really admire the ideas behind Lisp, including the original paper from the 1950's, I would like to learn some Lisp dialect.</p>

<p>Which Lisp dialects are currently suitable for bioinformatics (e.g., for developing simple command-line tools)? I have the following requirements:</p>

<ol>
<li>Portability across main Unix platforms and reproducibility (this seems to be a huge issue in many Lisp-like languages)</li>
<li>Resulting programs being installable using Bioconda (it should be technically possible at least in future if not now)</li>
<li>Negligible starting time (this disqualifies Clojure, which requires approximately 10 seconds)</li>
</ol>

<reproducibility>
Lisp in bioinformatics
# Lisp in bioinformatics

(Asked by: username_0 on 2017-12-28)

After many years of programming in Python, C/C++ and other mainstream languages, I am looking for a new language of pleasure, mainly as a part of mental hygiene. Since I really admire the ideas behind Lisp, including the original paper from the 1950's, I would like to learn some Lisp dialect.

Which Lisp dialects are currently suitable for bioinformatics (e.g., for developing simple command-line tools)? I have the following requirements:

1. Portability across main Unix platforms and reproducibility (this seems to be a huge issue in many Lisp-like languages)
2. Resulting programs being installable using Bioconda (it should be technically possible at least in future if not now)
3. Negligible starting time (this disqualifies Clojure, which requires approximately 10 seconds)

**Tags:** reproducibility

---

## 2 answers

### Answer by username_1 on 2017-12-29. Score: 3

I like the idea but I’m not aware of a strong Lisp presence anywhere in bioinformatics. I think a good starting point would be the paper [*How the strengths of Lisp-family languages facilitate building complex and flexible bioinformatics applications*](https://doi.org/10.1093/bib/bbw130) by Khomtchouk *&al* (and [the Hacker News discussion](https://news.ycombinator.com/item?id=13354035)).

Excluding Clojure from consideration will unfortunately close off a great many modern resources (although I fundamentally agree with your technical reason for doing so). Apart from this, [Scheme](https://en.wikipedia.org/wiki/Scheme_%28programming_language%29) (in particular R7RS) is probably the most-used Lisp dialect, ahead of [Common Lisp](https://en.wikipedia.org/wiki/Common_Lisp). Or at least the most actively developed one. As Pierre mentioned, there’s also [GNU Guile](https://en.wikipedia.org/wiki/GNU_Guile) but, to be honest, despite it being the default for GNU software tools I don’t think it’s frequently used outside GDB.

That said, Clojure’s startup time is *not* anywhere near 10 seconds on my system. It’s not exactly instantaneous but not much worse than other dynamic languages, despite being backed by the rather sluggish JVM.

> **Comments:**
> **username_2**: Clojure's slow startup time is no longer thanks to Babashka: https://book.babashka.org/  

---

### Answer by username_3 on 2017-12-28. Score: 1

Which LISP dialects are currently suitable for bioinformatics (e.g., for developing simple command-line tools)? I have the following requirements:

I have recently pushed a PR for samtools (mostly for fun) https://github.com/samtools/samtools/pull/752 that uses the GNU Guile library https://www.gnu.org/software/guile/
./samtools view   -g \
   '(define read-filter (lambda (R) (and (> (hts-read-length R ) 10 ) (integer? (string-contains  (hts-read-seq R) "GCCTTGGCTCTTGTTCC")))))' input.bam


---

