Skip to content

Instantly share code, notes, and snippets.

View ncaq's full-sized avatar
🏠
Working from home

ncaq

🏠
Working from home
View GitHub Profile
@ncaq
ncaq / gist:7263027
Created November 1, 2013 09:28
structではできるのに,classでできないのはなぜだ?
struct S
{
this(in int val)inout
{
val_ = val;
}
private int val_;
}
class C
@ncaq
ncaq / ackerman.hs
Last active December 27, 2015 17:29
http://urasunday.com/u-2_09/comic/002_001.html 全然計算終わんねえワロタ
f :: Integer -> Integer
f n = n + 1
b :: Integer -> Integer -> Integer
b m n
| m == 0 && n > 0 = f n
| m > 0 && n == 0 = b (m - 1) 1
| otherwise = b (m - 1) (b m (n - 1))
g :: Integer -> Integer
@ncaq
ncaq / .inputrc
Created May 11, 2015 11:39
GNU readline keybinding setting
set editing-mode emacs
# control
"\C-b": backward-delete-char
"\C-h": backward-char
"\C-n": history-search-forward
"\C-s": forward-char
"\C-t": history-search-backward
var PLUGIN_INFO =
<KeySnailPlugin>
<name>open in chromium</name>
<description>add open-document-in-chromium</description>
<version>0.1</version>
<updateURL>https://gist.githubusercontent.com/ncaq/c8a23b50ab25f54e6ab12a3310b563f1/raw</updateURL>
<author mail='ncaq@ncaq.net' homepage='https://www.ncaq.net'>ncaq</author>
<license>The MIT License</license>
<minVersion>1.8.0</minVersion>
<include>main</include>
var PLUGIN_INFO =
<KeySnailPlugin>
<name>HoK Private</name>
<description>add hok-start-private-mode</description>
<version>0.1</version>
<updateURL>https://gist.github.com/ncaq/241aeef4f01a0bac625341f1c873063d/raw</updateURL>
<author mail='ncaq@ncaq.net' homepage='https://www.ncaq.net'>ncaq</author>
<license>The MIT License</license>
<minVersion>1.8.0</minVersion>
<include>main</include>
@ncaq
ncaq / SimpLisp.hs
Last active December 1, 2016 01:54
簡単なLispっぽい言語の実装です.ダイナミックスコープ.途中で力尽きた.
module SimpLisp where
import Control.Monad
import Data.Maybe
import Text.ParserCombinators.Parsec
data LVal = LAtom String
| LList [LVal]
| LNumber Double
| LString String
@ncaq
ncaq / fib.ll
Last active December 1, 2016 01:55
llvm中間言語によるフィボナッチ数の計算です
declare i32 @printf(i8* noalias nocapture, ...)
define i32 @main() {
%ds = alloca [4 x i8]
store [4 x i8] c"%d\0a\00", [4 x i8]* %ds
%dp = getelementptr [4 x i8], [4 x i8]* %ds, i64 0, i64 0
%x1 = alloca i32
store i32 1, i32* %x1
%x2 = alloca i32
store i32 1, i32* %x2
@ncaq
ncaq / wc.rb
Created December 1, 2016 01:56
rubyによるwcの部分的実装
NAME = ARGV[0]
FILE = File.open(NAME)
CONTENT = FILE.read
LINES = CONTENT.scan(/(\r\n|\r|\n)/).size
WORDS = CONTENT.lines.map { |l| l.split(/\p{blank}+/).select { |w| w =~ /\S/ }.size }.reduce(:+)
BYTES = FILE.size
I = [LINES, WORDS, BYTES].map { |n| n.to_s.size }.max
printf "%#{I}d %#{I}d %d %s\n", LINES, WORDS, BYTES, NAME
@ncaq
ncaq / grive.service
Created December 1, 2016 01:58
grive simple daemon
[Unit]
Description=grive daemon
[Service]
ExecStart=/bin/bash -c 'while true; do grive -p ~/GoogleDrive; inotifywait -r -t 1000 -e modify,move,create,delete ~/GoogleDrive; done'
[Install]
WantedBy=default.target
@ncaq
ncaq / ed.rb
Created December 1, 2016 03:08
rubyによるedの部分的実装
#!/usr/bin/env ruby
# coding: utf-8
require 'pp'
require 'readline'
class Ed
class Command
def initialize(secondary, primary, type, param)
@secondary = secondary
@primary = primary