
Scmutils in Clojure - tosh
https://github.com/littleredcomputer/sicmutils
======
dig1
Congrats to author! Just a small addendum: I'm not a lawyer, but I'd advise
author to check licenses. GPL3 project license and EPL license of libs used as
dependencies aren't compatible.

There was a bit discussion about this and, if I got it correct, Clojure
project could be licensed under GPL only when there aren't EPL licensed
dependencies.

~~~
bachmeier
I don't see how there could be a problem unless the author is distributing a
binary. If you give someone GPL code, they can do anything they want with it,
as long as it's for their own use. It could potentially cause problems for
_other people_ that want to mix the two in improper ways for purposes of
distribution, but that's not the author's problem.

~~~
lemming
[https://www.eclipse.org/legal/eplfaq.php#GPLCOMPATIBLE](https://www.eclipse.org/legal/eplfaq.php#GPLCOMPATIBLE)

 _Based upon the position of the Free Software Foundation, you may not combine
EPL 1.0 and GPL code in any scenario where linking exists between code made
available under those licenses. The above applies to both GPL version 2 and
GPL version 3._

Since Clojure itself and its core library are EPL, this means you basically
cannot write GPL code with Clojure.

~~~
bachmeier
There are no restrictions on what you do with GPL software if you're not
distributing it. Here's what the FSF has to say[1]:

"If I only make copies of a GPL-covered program and run them, without
distributing or conveying them to others, what does the license require of me?
(#NoDistributionRequirements)

Nothing. The GPL does not place any conditions on this activity."

The whole point of the GPL is to guarantee that the user can do _anything_
they want with the software. The only limitations on GPL software are with
respect to distribution.

~~~
fulafel
So is the Eclipse FAQ wrong, or does the EPL forbid this private use of EPL'd
code in a non-distribution scenario?

It sounds to me like the FAQ is wrong, since it quotes the FSF's position as
the foundation of its argument.

edit: apparently a twist is that GPL is considered a pure copyright license,
and so covers only distribution, but the EPL is broader. It starts with "ANY
USE, REPRODUCTION OR DISTRIBUTION OF THE PROGRAM CONSTITUTES RECIPIENT'S
ACCEPTANCE OF THIS AGREEMENT". So apparently this makes it a kind of contract
and not just a copyright licese.

------
Y_Y
The lack of "apply hooks" put me off the the guile version, and running MIT
scheme isn't much fun. I'd love to see the book updated with the new code, or
even better, a full racket version.

------
eggy
I'll have to check this out. SICM is great.

I was playing with the Racket port[1] a while back. I am not sure how complete
it is compared to this Clojure implementation.

[1] [https://github.com/bennn/mechanics](https://github.com/bennn/mechanics)

~~~
soegaard
Note that Alex Gian is porting SICM to Racket. Check the Racket mailing list
for SICM posts.

------
db48x
That looks like a fantastic effort. Scmutils is an astounding language, and
porting it is a Herculean task.

------
lemming
I wonder how performance sensitive this code has to be? Clojure is a pretty
bad choice for numerical work in general since function parameters are usually
just Object and this leads to a lot of boxing. You can type hint them as
primitives but it's pretty funky internally once you start doing that. If code
can offload the numerically intensive bit to either Java or something native
(as Neanderthal does) then it's more tractable, or of course if it doesn't
actually require very high performance.

Still, awesome effort - it looks like a ton of work.

~~~
db48x
Presumably the Java library it uses for the numerical integrators works on
unboxed data.

~~~
lrc
You are correct.

------
lrc
zoinks! I did the port but somehow missed my HN moment. Someday I was thinking
this might be worth a show HN, if I get some more web pages up exploring what
can be done with the system.

