Skip to content

Instantly share code, notes, and snippets.

import std;
auto takeUntil(R)(R base,R other){
static struct Result{
R base;
R other;
alias base this;
bool empty()=>base==other;
}
return Result(base,other);
}
float lazyexo(byte i){
if(i==-128){return 0;}
if(i<0){return 1/lazyexo(cast(byte)-i);}
enum table1=[0.0,1.0/5,1.0/3,1.0/2];
enum table2=[1,2,5,10];
float frac=table1[i%4];
i/=4;
uint signif1=table2[i%4];
i/=4;
signif1<<=i*4;
char[80] buffer="helloworld";
void print(T)(ref T buf){
asm{
mov RAX, 1;
mov RDI, 1;
mov RSI,buf;
mov RDX,9;
syscall;
}}
void main(){
import std;
string expandmixin(string s){
return "static if( __traits(compiles,"~s~")){ return "~s~";}";
}
unittest{
expandmixin("foo").writeln;
}
string elsejoin(string[] s){
auto l=s.length;
--- bar.d
void min(int a,int b){}
void f1(){}
void f3(){}
void f5(int){}
--- foo.d
void min(float a,float b){}
void f2(){}
/*
a one char clock for 256 color teminals
red-yellow: am
teal-blue: pm
☀: noon
☾: midnight
red/teal: early hour
yellow/blue: late hour
/* minium viable std
every possible trade off to just get it done
orginaztion? nah mega file
more then 1 unittest? nah
docs? what for you have unittest
comprosmizes with other view points? nah everyone else wrong
effent code? nah, who needs it computers fast
good overloads? nah, just use it well
good error messages? nah just dont make typos
template meta programming to make things easier for the end user? no that would take 100x as long

changing ranges

New std means an opptunity to make breaking changes ranges, this should be siezed and drasticly done.

rough goals:

  1. degrade doubly linked lists ("bidirectional") to be less important then arrays, hash maps, strings, databases, litterally any data stucture.

  2. different "paths" an ideal array is very different from a skiplist

float isqrt(bool veryveryslow:true)(float f){
import std.math:sqrt;
return 1/sqrt(f);
}
//float isqrt()(float f){
// long i;
// float x2,y;
// const float threehalfs=1.5;
// x2=f*.5;
import std.traits;
template polymorphic(alias F){
auto polymorphic(T...)(T args){
mixin((){
import std.conv:to;
string o;
foreach(i,S;(Parameters!F)[0..T.length]){
o~="args["~i.to!string~"].to!"~S.stringof~",";
}
return "return F("~o~");";