2015-01-01から1年間の記事一覧

Petite Chez Schemeをインストール

Chez Scheme Version 8.4 tar -xzvf pcsv8.4-ti3osx.tar.gz cd csv8.4/costom ./configure --installprefix=~/local --installman=~/local/share/man make make install すると petite と scheme-script がインストールされる。root権限にchownしようとした…

><>(Fish)に入門した

あらすじ ><>という難解プログラミング言語が某ゴルフ場に入ったので、入門した。言語の名前上、ググラビリティが非常に低く日本語の情報が見当たらなかったので、ここに日本語で自分の><>入門への道中を記す。あくまで初心者が調べながら書いた文章なので、…

任意の型の引数を無限に消費する空腹関数はHaskell(GHC)では書けないのか?

Schemeでいうと (define (hungry x) hungry) みたいなやつ。ここまではできた。参考: https://github.com/jstolarek/sandbox/blob/master/haskell/Hungry.hs Prelude> :set -XRankNTypes Prelude> data Hungry = Hungry { (%) :: forall b. b -> Hungry } Pr…

はじめてのQuineリレー

概要 昨日、自分自身を出力するHaskellプログラムを生成するOCamlプログラムを生成するSchemeプログラムを生成するRubyプログラムを生成するJavaScriptプログラムを生成するCプログラムを書いた。 #include<stdio.h> int main(){char*g="var p=print;p('puts %%^(form</stdio.h>…

enum型からその中の型へのキャスト

C++

enum型からその中の型へのキャストする underlying_cast を書いた。 #include <cinttypes> #include <type_traits> #include <array> #include <cstdio> template <class E> constexpr typename std::underlying_type<E>::type underlying_cast(E e) noexcept { return static_cast<typename std::underlying_type<E>::type>(e); } enum class Ki…</typename></e></class></cstdio></array></type_traits></cinttypes>

Cプリプロセッサマクロ挙動クイズ

C

#define STR(a) #a #define STR_(a) STR(a) #define CONCAT(a,b) a##b #define CONCAT_(a,b) CONCAT(a,b) #define M1(a) STR(CONCAT(a, __LINE__)) #define M2(a) STR_(CONCAT(a, __LINE__)) #define M3(a) STR(CONCAT_(a, __LINE__)) #define M4(a) STR_(CO…