319 karma · joined August 5, 2024
- Cross-compilation and target platform information
- Fetching dependencies
- Toolchains
I'm not sure a system that solves these would still be considered minimal by most, but those are table-stakes features in my view.
If you don't need these things, maybe stick with Make?
I tend to prefer either:
- Using a build-system (e.g. Make) to encode logic and just invoke that from GitHub Actions; or
- Writing a small CLI program and then invoke that from GitHub Actions
It's so much easier to debug this stuff locally than in CI.
So an interesting trick, but I don't see where it would be useful.
This is something that would be enabled with hash identifiers and no modules:
let foo_1 = universe.mega_corp.finance_dept.team_alpha@v1.0.0.foo
let foo_2 = universe.mega_corp.finance_dept.team_alpha@v2.0.0.foo
let compare_old_new_foo(x) =
foo_2(x) - foo_1(x)
There would be a corresponding lock-file to make this reproducible: {
"universe.mega_corp.finance_dept.team_alpha": {
"v1.0.0": "aabbcc",
"v2.0.0": "xxyyzz"
}
}
I think this is pretty neat! open universe.mega_corp.finance_dept.team_alpha
Then when you use `foo`, the compiler would know you mean `universe.mega_corp.finance_dept.team_alpha.foo`.There will probably need to be some kind of lock-file or hash stored with the source-code so that we know precisely which version of `universe.mega_corp.finance_dept.team_alpha.foo` was resolved.
universe.mega_corp.finance_dept.team_alpha.foo
But to use `universe.mega_corp.finance_dept.team_alpha.foo` in your application, you don't import a module, just the function `foo`.Who controls what goes into the namespace `universe.mega_corp.finance_dept.team_alpha`? That would be Team Alpha in the Finance Department of Mega Corp.
I guess this is like tree-shaking by default.
- The editor
- Several terminal windows
- Some docs
- GitHub PRs
- AWS console
- Admin tools like PgAdmin
- Teams, Slack, etc.
When screen-sharing with Zed, do I only get to share the editor?
Because (clunky as they are) video call apps let me share everything and this is table-stakes for collaboration.
I first learned about Roc from this talk:
https://www.youtube.com/watch?v=vzfy4EKwG_Y
That's a niche that is not currently filled (well, maybe MLTon) and that has me very excited! I'm sure I'm not alone here.
I don't understand why the goal is not to (eventually) implement Roc in Roc, maybe with a dash of something else for the "platform".
Roc is pitched as a general purpose functional programming language with great performance.
How does a compiler not fall under this category?
And now they are doubling down on that by moving from "OCaml meets C++" to "C, the good parts"!
If FP isn't good for writing a compiler, what is it good for?
Aren't parser combinators just one way to do recursive descent?
This is where it breaks down a bit.
Importing the same script file twice leads to errors, so you must manually ensure exactly once imports across your dependency tree of scripts.
This is where C/C++ code reaches for include guards, but F# does not have a define pre-processor command (unlike C#).
#r "nuget: NodaTime, 3.2.1"
open NodaTime
let now = SystemClock.Instance.GetCurrentInstant()
printfn "%A" nowSad that lufguss will probably become just another channel on one of the big platforms. RIP.
If going untyped JS, then you don't have the same restrictions as Java.
If going typed, then the TypeScript type-system is more powerful than Java's.