I make things: electronics and software and music and stories and all sorts of other things.

  • 1 Post
  • 142 Comments
Joined 1 year ago
cake
Cake day: June 14th, 2023

help-circle










  • And yeah I know about NixOS but I like to distro hop and experiment

    If you know about NixOS, then you probably know this, but Nix, the package manager/the language behind NixOS, is cross-platform.

    I daily drive NixOS, but I also use Nix (and home-manager) on my Fedora music laptop, my Ubuntu home file-server, and my work Windows machine (WSL) to install and configure neovim automatically instead of copying a config, installing all the packages, and running check health over and over again until everything is set up.

    I just copy my neovim.nix file over (also other things like zsh.nix) and run home-manager switch

    You don’t have to use NixOS to take advantage of its benefits.







  • In case you’re interested, the language is a derivative of an esolang I made called NaBD. The idea was a Turing tarpit but for functional languages. What’s the minimal I could get by with and still feel like a real language? (And no, not just lambda calculus; needed a real implementation)

    I realized this sort of stripped-down functional language would make a great basis for a graphical programming language, something I’ve wanted to make for a while, so I set out to refine and remake it into just that.

    That’s why the syntax is a little bizarre, bc it mimics the flow of graphical blocks. It also is very simple. Every function has one input and one output with no first class funcs/currying. It’s also statically typed.

    Here’s a truth-machine (doesn’t work yet bc I haven’t implemented some of the standard functions; it does parse and type check tho at least):

    truth_mach :: Num -> Num =
        { inp -> bool,
            1 -> str -> print -> truth_mach,
            0 -> str -> print } -> if.
    main :: <<Char>> -> Num = read -> parse -> truth_mach.
    

    It will also support the C ABI via extern_c name_of_lib : name_of_function :: Type -> Type. This is not implemented yet either.