Skip to content

Instantly share code, notes, and snippets.

View Manu343726's full-sized avatar

Manu Sánchez Manu343726

View GitHub Profile
@Manu343726
Manu343726 / haskell_function.cpp
Created May 3, 2014 16:00
Haskell-like partial function calls for C++11
/****************************************************************************
* Haskell-like automatic partial functions *
* *
* Copyright © 2014 Manuel Sánchez Pérez *
* *
* This program is free software. It comes without any warranty, to *
* the extent permitted by applicable law. You can redistribute it *
* and/or modify it under the terms of the Do What The Fuck You Want *
* To Public License, Version 2, as published by Sam Hocevar. See *
* http://www.wtfpl.net/ for more details. *
@Manu343726
Manu343726 / cpp14monad.cpp
Last active January 23, 2024 11:41
C++14 tuple continuation monad
//Author: Manu Sánchez (Manu343726). Aug 2014
//Everything started from this: http://stackoverflow.com/questions/25338795/is-there-a-name-for-this-tuple-creation-idiom
//Now, play with C++14!
#include <utility>
#include <iostream>
#include <exception>
template<typename... Ls>
@Manu343726
Manu343726 / cowbasic_string.hpp
Last active November 15, 2023 17:44
(conceptual) COW string implementation
/*
* A simple Copy On Write (COW) string implementation.
*
* Copyright © 2014 Manu Sanchez. @Manu343726 on GitHub, Stack Overflow, etc.
*
* manu343726.github.io
*
* This program is free software. It comes without any warranty, to
* the extent permitted by applicable law. You can redistribute it
* and/or modify it under the terms of the Do What The Fuck You Want
@Manu343726
Manu343726 / main.cpp
Created November 21, 2014 14:48
tuple monad (with maybe for filtering)
#include <iostream>
#include <string>
#include <vector>
#include <functional>
#include <experimental/optional>
#include <utility>
auto naked_tuple = [](auto... xs)
{
return [=](auto f)
# This file has been auto-generated by i3-config-wizard(1).
# It will not be overwritten, so edit it as you like.
#
# Should you change your keyboard layout some time, delete
# this file and re-run i3-config-wizard(1).
#
# i3 config file (v4)
#
# Please see http://i3wm.org/docs/userguide.html for a complete reference!
@Manu343726
Manu343726 / gist:cd7b345e91d30271b1de
Last active August 29, 2015 14:23
Type-erased C++ ranges
//
// Created by manu343726 on 16/06/15.
//
#ifndef ERASED_RANGE_HPP
#define ERASED_RANGE_HPP
#include <range/v3/all.hpp>
#include <type_traits>
@Manu343726
Manu343726 / example.cpp
Last active August 29, 2015 14:26
piecewise_construct<T>(): Construct a T from tuple elements
#include "piecewise_construct.hpp"
struct foo
{
foo(int i, int j) :
i{i}, j{j}
{}
int i = 0, j = 0;
};
@Manu343726
Manu343726 / compiler_invocation.txt
Last active August 29, 2015 14:26
ctti example 1
g++ main.cpp -o ctti.s -S -O3 -Wno-unused-value -ftemplate-depth=2048 -DCTTI_MAX_STRING_LENGTH=128
@Manu343726
Manu343726 / compiler_invocation.txt
Created August 8, 2015 21:36
ctti example 1 (clang)
clang++ -std=c++14 main.cpp -o ctti.s -O3 -S -Wno-unused-value -ftemplate-depth=2048 -DCTTI_MAX_STRING_LENGTH=128
@Manu343726
Manu343726 / main.cpp
Created August 13, 2015 21:46
c++ customizable tuple
#include "tuple.hpp"
#include <iostream>
template<typename T>
std::intptr_t between(const T& lhs, const T& rhs)
{
return reinterpret_cast<std::intptr_t>(&lhs) - reinterpret_cast<std::intptr_t>(&rhs);
}
template<typename T>