Skip to content

Instantly share code, notes, and snippets.

View ShalokShalom's full-sized avatar
🐉
Garuda

ShalokShalom ShalokShalom

🐉
Garuda
View GitHub Profile
To change `Value<'a>` to `Value<'v>` in the return type, you need to ensure that:
1. **The struct has a lifetime parameter `'v`**: The struct implementing this method must be defined with a lifetime `'v`, e.g., `struct MyStruct<'v> { ... }`.
2. **`'v` outlives `'a`**: The lifetime `'v` of the `Value`s must outlive the reference lifetime `'a` (i.e., `'v: 'a`). This ensures the `Value`s remain valid for the duration of the returned slice.
Here's the corrected signature if your struct is `MyStruct<'v>`:
```rust
impl<'v> MyStruct<'v> {
Can I change this code:
```rust
pub fn peek_frame<'a>(&'a self) -> Option<&'a [Value<'a>]>
```
into​
```rust
pub fn peek_frame<'a>(&'a self) -> Option<&'a [Value<'v>]>
# python_julia_connector.py
import os
from juliacall import Main as jl
# from juliacall import JuliaError # To specifically catch Julia errors if needed
# --- Environment Management & Initialization ---
# You might need to configure JuliaCall if Julia is not in your PATH
# or if you want to use a specific Julia project environment.
# For example:
# from juliacall import JuliaCall # For more control
New features get merged into `development`
New corrections get merged into `release`
Every new merge creates a new version.
A release has the versioning 2024.06.12-1
Binaries are called release-2024.06.12-1 and
development-2025.07.23-2
homoiconic transpiler toolchain
@ShalokShalom
ShalokShalom / gist:335c7aafd8a93b0e0c65cb6ff86b418d
Created February 19, 2025 00:03
The transparency of programming
Semantic transparency
Examples:
-- Multiple dispatch - ECS
-- Lambda principle - Lisp interpreter
An implementation can match the semantics of the architecture of the underlying system.
The tool ideally matches the product.
If CVEs in C++ code were 98% lower (2% of today) in the four key buckets -- initialization safety, type safety, bounds safety, and lifetime safety -- then we wouldn't be having this conversation. There would be no problem.
Cpp2 today has
guaranteed initialization safety (better than C# or Java),
guaranteed type safety (via safe is type queries and as casts),
bounds safety (via subscript checking, banning pointer arithmetic, and safe-by-construction iteration such as range-for) except for naked use of raw STL iterators, and
--Rich Hickey's infamous transducers, demonstrating reversed function composition.
--Look closely.
function transduce(tf, rf, init, iter)
for i in iter do
init = tf(rf)(init, i)
end
return init
end
@ShalokShalom
ShalokShalom / multiple-dispatch.hx
Created January 2, 2025 15:56
Haxe (multiple dispatch)
// Type definitions for method signatures and dispatch information
private typedef MethodSignature = {
var paramTypes:Array<Class<Dynamic>>;
var method:Dynamic;
}
// Dispatcher implementation that could be used by a transpiler
class GenericDispatcher {
// Static registry for all multi-methods
private static var methodRegistry:Map<String, Array<MethodSignature>> = new Map();
@ShalokShalom
ShalokShalom / lix_install
Last active March 4, 2026 10:16
Quick installation of Lix + Homemanager
Lix is a community-driven fork of the Nix package manager that offers several technical,
and organizational improvements over upstream Nix while maintaining full backward compatibility.
It has has implemented various optimizations that reduce build times,
increase the parsing performance and error messages compared to upstream Nix,
enhances the debugging workflow, and uses Meson as its build system instead of plain Make.
Also, it incrementally introduces Rust to the codebase, and stays fully backwards compatible. 🙂