
@343519265 Thanks. Is it easy to tell whether we are “not inspecting continuation marks”? I’m hoping that @notjack’s https://docs.racket-lang.org/resyntax/index.html\|resyntax could handle such a case, say (to start with), a simple rule such as: (let ([v v-expr])
(if <expr-without-v> <expr-without-v> v))
-->
(if <expr-without-v> <expr-without-v> v-expr)

Oh and indeed we need to prove it’s single valued. Annoying. … or we allow this transformation in Racket? :slightly_smiling_face:

Is there a physics 3D library in Racket?

There are for graphics, sound, but not physics

I believe there are a couple on http://pkgs.racket-lang.org\|pkgs.racket-lang.org. Can’t remember the names.

And what about fluxus? https://www.pawfal.org/fluxus/\|https://www.pawfal.org/fluxus/
It looks very nice but it has a lot of dependencies.

If v-expr
contains side effects, it is problemativ to move v-expr
.

So a check for no side effects of v-expr
is needed too.

indeed. Chez has some tags about some forms of purity, like ’ivory and ’simple

but probably these tags are only available during nanopass, so such an optimization would have to go there.

Nix, is still first and foremost still a package manager ala pacman, yum etc… there’s no easy way to bootstrap a language onto Nix.

There’s python which @artemchernyak already mentioned (not surprisingly since python scripts are already bundled in distros)

The Haskell community is the only community I’ve seen try really hard to do this. It somewhat works but requires a lot of config still.

But there’s also Haskell which has /two/ infrastructures based on Nix.

jinx :slightly_smiling_face:

There’s actually a similar translation layer for Cargo (now dead) and also Raco.

Oh. The emacs, elisp one is really good as well.

If you want to see a guide on how to setup a Haskell project fully integrated with nix, https://github.com/Gabriel439/haskell-nix gives a great rundown. This can give you an idea on whether nix is a path you want to pursue.

Like @artemchernyak I tend to use it as a more predictable version of VM’s/Docker because I run NixOS as well (in for a penny, in for a pound!)



Oh.

Obviously C is great on Nix.

really annoying case I hit recently: (let ([fp fp])
... (set! fp ...) ...)
... fp ...

haha, that should be forbidden :smile:

Oh; I should probably say that the Nix docs are quite obtuse.

My favourite line from the docs: https://nixos.org/guides/nix-pills/nix-search-paths.html#idm140737319825920

Why is nix-env having this different behavior? I don't know specifically by myself either, but the answers could be:

The language is pretty good for it’s use case; if your familiar with lazy languages I don’t think you’ll have too much trouble.

Yeah… followed by
It may or may not make sense for you, or it's like that for historical reasons, but that's how it works currently

I was debugging a Nix issue when I came across it, and I /think/ it was the closest I’ve ever been to flinging my computer across the room.

discouraged maybe :p

or forbidden in a different #lang

Well, it is a nice way to prevent a module level variable in being tagged as mutable.

so is using a different variable name

@wu.tianyi1 has joined the channel


I only personally know of Pict3D: Functional 3D Scenes (http://racket-lang.org\|racket-lang.orghttp://next-pkg-build.racket-lang.org/doc/pict3d/index.html?hq=M%3A\|) for 3D (like you mentioned. I’d be interested in knowing if you find any physics libraries or bindings.


Another take on language-oriented programming. > The assembler defines the language for describing the compiler and supervisor; the supervisor the language for job control; the compiler the language for application programs; the application program the language for its input. http://www.ultratechnology.com/f70c1.html