Skip to content

Instantly share code, notes, and snippets.

alias seq(T...)=T;
template groupby(alias F,A...){
template groupby(int I){
alias groupby=seq!();
static foreach(J,a;A){
static if(F(J)==I){
groupby=seq!(groupby,a);
}
}}
}
struct fatslice(T){
T[] data;
int key,keyback;
ref T opIndex(int i)=>data[i+key];
int length()=>keyback-key;
auto opSlice(int i,int j)=>typeof(this)(data,i+key,j+key);
int opDollar()=>keyback-key;
T[] simplify()=>data[key..keyback];
}
auto zipslice(A...)(A args){
import std;
enum string compiler="dmd -unittest -main -run ";
enum string printer="bat --color=always ";
void append(string file,string line){
exe("echo \""~line~"\" >> "~file);
}
void exe(string s)=>executeShell(s).output.writeln;
void delete_(string file,int linestart,int lineend){
auto source=File(file,"r").byLineCopy.array;
File sink=File(file~"temp","w");

Statement Unittest

Field Value
DIP: (number/id -- assigned by DIP Manager)
Author: monkyyy, [email protected]
Implementation: (links to implementation PR if any)
Status: Draft

Abstract

import std;
alias seq=AliasSeq;
template isrange(alias R,string s){
static if(__traits(compiles,mixin("isInputRange!(typeof(R."~s~"))"))){
enum isrange=mixin("isInputRange!(typeof(R."~s~"))");
} else {
enum isrange=false;
}}
template childranges(R){
alias store=seq!();
auto curryrecurse(alias F,int I=2,Args...)(Args args){
static if(Args.length>I){
static if(is(typeof(F(args[0..I]))==void)){
F(args[0..I]);
curryrecurse!(F,I)(args[I..$]);
} else {
return curryrecurse!(F,I)(F(args[0..I]),args[I..$]);
}} else {
return F(args);
}}
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;