<p>As a lot of people pointed out in <a href="https://stackoverflow.com/questions/4724/learning-lisp-why">this question</a>, Lisp is mostly used as a learning experience.  Nevertheless, it would be great if I could somehow use my Lisp algorithms and combine them with my C# programs.
In college my profs never could tell me how to use my Lisp routines in a program (no, not writing a GUI in Lisp, thank you).
So how can I?</p>

[{'answer_id': 70030, 'author': 'jfs', 'author_id': 718, 'author_profile': 'https://Stackoverflow.com/users/718', 'pm_score': 5, 'selected': True, 'text': '<p>Try these .Net implementations of Lisp:</p>\n\n<ul>\n<li><a href="https://github.com/leppie/IronScheme" rel="nofollow noreferrer">IronScheme</a></li>\n</ul>\n\n<blockquote>\n  <p>IronScheme will aim to be a R6RS\n  conforming Scheme implementation based\n  on the Microsoft DLR.</p>\n</blockquote>\n\n<ul>\n<li><a href="https://github.com/RobBlackwell/LSharp" rel="nofollow noreferrer">L Sharp .NET</a></li>\n</ul>\n\n<blockquote>\n  <p>L Sharp .NET is a powerful Lisp-like\n  scripting language for .NET. It uses a\n  Lisp dialect similar to Arc but\n  tightly integrates with the .NET\n  Framework which provides a rich set of\n  libraries.</p>\n</blockquote>\n'}, {'answer_id': 70039, 'author': 'Michiel Borkent', 'author_id': 6264, 'author_profile': 'https://Stackoverflow.com/users/6264', 'pm_score': 2, 'selected': False, 'text': '<p>If it\'s merely the routines you want to use you might try LSharp, which lets you have Lisp expressions in .NET:</p>\n\n<p><a href="http://www.lsharp.org/" rel="nofollow noreferrer">http://www.lsharp.org/</a></p>\n\n<p>The other way around (using .NET from Lisp) would be RDNZL:</p>\n\n<p><a href="http://www.weitz.de/rdnzl/" rel="nofollow noreferrer">http://www.weitz.de/rdnzl/</a></p>\n'}, {'answer_id': 70044, 'author': 'Patrik Svensson', 'author_id': 936, 'author_profile': 'https://Stackoverflow.com/users/936', 'pm_score': 2, 'selected': False, 'text': '<p>Perhaps you should take a look at L#. I don\'t know if it is what you are looking for (haven\'t touched Lisp since university) but it might be worth to check out.</p>\n\n<p><a href="http://www.lsharp.org/" rel="nofollow noreferrer">http://www.lsharp.org/</a></p>\n'}, {'answer_id': 70045, 'author': 'Lars Truijens', 'author_id': 1242, 'author_profile': 'https://Stackoverflow.com/users/1242', 'pm_score': 2, 'selected': False, 'text': '<p>The .Net 1.1 SDK contains a LISP compiler example. See SDK\\v1.1\\Tool Developers Guide\\Samples\\clisp</p>\n'}, {'answer_id': 71389, 'author': 'cemerick', 'author_id': 11809, 'author_profile': 'https://Stackoverflow.com/users/11809', 'pm_score': 3, 'selected': False, 'text': '<p><a href="http://clojure.org" rel="noreferrer" title="Clojure">Clojure</a> is a Lisp-1 that is <strong>compiled</strong> on-the-fly to Java bytecode, leading to very good runtime performance.  You can use Clojure, and cross-compile it to a .NET assembly using <a href="http://www.ikvm.net" rel="noreferrer" title="IKVM">IKVM</a>\'s ikvmc.  Of course, when used in .NET, Clojure happily generates .NET IL, leading to the same kind of compiled-code performance you can expect when using it on a JVM.</p>\n'}, {'answer_id': 2470508, 'author': 'Mark Hurd', 'author_id': 256431, 'author_profile': 'https://Stackoverflow.com/users/256431', 'pm_score': 2, 'selected': False, 'text': '<p>There is also <a href="http://dotlisp.sourceforge.net/dotlisp.htm" rel="nofollow noreferrer">DotLisp</a>.</p>\n'}, {'answer_id': 49617190, 'author': 'KFL', 'author_id': 695964, 'author_profile': 'https://Stackoverflow.com/users/695964', 'pm_score': 2, 'selected': False, 'text': '<p>I know this is a really old question. But I\'ll try to provide an answer from my own experience and perspective. </p>\n\n<p>To those like us who love the pureness and elegance and simplicity of Scheme/Lisp, I hope this gives you some encouragement and inspiration how they can be very useful in real production :)</p>\n\n<p>I recently open-sourced a Scheme-like interpreter from work called <a href="https://github.com/Microsoft/schemy" rel="nofollow noreferrer">schemy</a>, written in C# (~1500 line of code). And here\'s the motivation and how it is useful - </p>\n\n<p>Without going into too much detail, I was building a web API server, whose request handling logic is desired to be plug-and-play by other developers/data scientists. There was a clear demand for separation of concern here - the server does not care much about the request handling logic, but it needs to know which requests it can handle and where to find and <strong>load</strong> the logic for the handlers. </p>\n\n<p>So instead of putting handlers implementation in the server application, the server only provides re-usable "blocks" that can be chained together based on some criteria and logic to form a <em>pipeline</em>, i.e., handlers defined via <strong>configuration</strong>. We tried JSON/XML to describe such a pipeline and quickly realized that <strong>I was essentially building an abstract syntax tree parser</strong>. </p>\n\n<p>This was when I realized this was a demand for a lightweight, s-expression based small language. Hence I implemented the embeddable <a href="https://github.com/Microsoft/schemy" rel="nofollow noreferrer">schemy</a> interpreter.</p>\n\n<p>I put an example command handling application <a href="https://github.com/Microsoft/schemy/tree/master/src/examples/command_server" rel="nofollow noreferrer">here</a>, which captures the essence of the design philosophy for the web server I mentioned above. It works like so:</p>\n\n<ol>\n<li><p>It extends an embedded Schemy interpreter with some functions implemented\nin C#.</p></li>\n<li><p>It finds <code>.ss</code> scripts which defines a command processing pipeline by using\nthose implemented functions. </p></li>\n<li><p>The server finds and persists the composes pipeline from a script by\nlooking for the symbol <code>EXECUTE</code> which should be of type <code>Func&lt;object, object&gt;</code>. </p></li>\n<li><p>When a command request comes in, it simply invokes the corresponding\ncommand processor (the one defined by <code>EXECUTE</code>), and responses with the\nresult.</p></li>\n</ol>\n\n<p>Finally, here\'s a complex example script, that provides an online man-page lookup via this TCP command server:</p>\n\n<pre class="lang-lisp prettyprint-override"><code>; This script will be load by the server as command `man`. The command\n; is consistent of the following functions chained together:\n;\n; 1.  An online man-page look up - it detects the current operating system and \n;     decides to use either a linux or freebsd man page web API for the look up.\n; \n; 2.  A string truncator `truncate-string` - it truncates the input string, in\n;     this case the output of the man-page lookup, to the specified number of\n;     characters.\n; \n; The client of the command server connects via raw RCP protocol, and can issue\n; commands like:\n; \n;     man ls\n; \n; and gets response of the truncated corresponding online manpage content.\n\n(define EXECUTE\n  (let ((os (get-current-os))\n        (max-length 500))\n    (chain                                      ; chain functions together\n      (cond                                     ; pick a manpage lookup based on OS\n        ((equal? os "freebsd") (man-freebsd))\n        ((equal? os "linux") (man-linux))\n        (else (man-freebsd)))\n      (truncate-string max-length))))           ; truncate output string to a max length\n</code></pre>\n\n<p>With this script loaded by the command server, a TCP client can issue commands <code>man &lt;unix_command&gt;</code> to the server:</p>\n\n<pre class="lang-none prettyprint-override"><code>$ ncat 127.0.0.1 8080\n\nman ls\n\nLS(1)                   FreeBSD General Commands Manual                  LS(1)\n\nNAME\n     ls -- list directory contents\n\nSYNOPSIS\n     ls [--libxo] [-ABCFGHILPRSTUWZabcdfghiklmnopqrstuwxy1,] [-D format]\n        [file ...]\n\nDESCRIPTION\n     For each operand that names a file of a type other than directory, ls\n     displays its name as well as any requested, associated information.  For\n     each operand that names a file of type directory, ls displays the names\n     of files contained within that directory, as well as any requested,\n</code></pre>\n'}]
['https://Stackoverflow.com/questions/70004', 'https://Stackoverflow.com', 'https://Stackoverflow.com/users/11333/']