marg-do's

関数型生活

なぜかcabalでvectorがインストール出来ない

cartazio comments on Anyone running GHC 7.6.3 on OSX Mavericks? brew install libiconvして cabal install pandoc --extra-lib-dir=/usr/local/Cellar/gmp/6.0.0a/lib

cocos2d-xでiOSデフォルトのMapViewを表示する

cocos2d-xではデフォルトでMapViewのような物が無いので(当たり前といえば当たり前)、地図を表示させる部分のみネイティブで実装する必要がある。 とりあえずiOS版だけメモ。 // HelloWorldScene.cpp // メインの実装ファイル // ……省略…… // MapViewを開…

golangでサーバーの死活監視スクリプトを書いた

golangを触ってみたかったので、サーバーの死活監視スクリプトを書いてみました。 開発環境 go 1.2.2 darwin/amd64(コンパイル) CentOS amd64(動作サーバー) コンパイル 手元のMacBookからサーバーでそのまま動くバイナリファイルへとクロスコンパイル出来ま…

HaskellのWebフレームワークSnapで簡単セッション管理

HaskellのWebフレームワークといえばYesodですが、今回は勉強目的も兼ねてよりライトなフレームワークSnapを試してみます。 commitSessionを忘れていて結構手間取ったのですが、一度覚えてしまえばシンプルに使えていいと思いました。 開発環境 OS X 10.9.3 …

ラッパーオブジェクト

js>var s = "test"; js>s.len = 4; js>typeof(s.len) undefined なぜこのようなことになるのでしょう? js>var s = "test"; この段階では、sは文字リテラル"test"自体を指している。 js>s.length; s.lengthは(new String(s)).lengthと解釈され、新たなオブジ…

簡単なechoプログラム

myecho.hs import System.Environment main = do args <- getArgs putStrLn $ foldr (\x acc -> x ++ " " ++ acc) "" args $ ghc --make myecho $ ./myecho Hello World Hello World

型についてメモ

data Shape = Circle Float Float Float ghci> :t Circle Circle :: Float -> Float -> Float -> Shape ということで、値コンストラクタは関数。 ghci> :t Circle 2 1 Circle 2 1 :: Float -> Shape 部分適用もできる

Lispのassocみたいなもの

assoc :: Eq a => a -> [(a, b)] -> Maybe (a, b) assoc itm [] = Nothing assoc itm lst = if (fst tpl) == itm then Just tpl else assoc itm $ tail lst where tpl = head lst 追記 畳込関数を使った方が分かり易い assoc :: Eq a => a -> [(a,b)] -> May…

関数適用関数の使い方

Haskellには関数適用演算子(関数)が定義されている。 ($) :: (a -> b) -> a -> b f $ x = f x右結合で優先順位が低いため、括弧の省略に有用だ。次のような使い方もできる。 ghci> map ($ 10) [(+ 3), ((-) 3), (* 3), (/ 3)] [13.0,-7.0,30.0,3.333333333…

畳込関数foldrとfoldl

右畳み込み関数foldrは次の様な挙動をする。 ghci> foldr f acc xs (※xs = [x0, x1, x2, x3, x4]とする) f x4 (f x3 (f x2 (f x1 (f x0 acc)))) また、左畳み込み関数foldlは次のような挙動をする。 ghci> foldl f acc xs (※xs = [x0, x1, x2, x3, x4]とす…

lambda関数のつくりかた

メモ a = ->(x){x*2} b = lambda{|x| x*3} a.(3) #=> 6 b.(3) #=> 9

高階関数の合成

今勉強している、プログラミングHaskellに載っていない(?)ようなのでメモ。 Prelude> filter even (map (*3) [1..15]) [6,12,18,24,30,36,42] Prelude> filter even $ map (*3) [1..15] [6,12,18,24,30,36,42]

CentOSにHaskell開発環境を構築してみる

最近Haskellを勉強しているのですが、開発環境をVM上にまとめてしまおうということでやってみました。 実行環境など CentOS 6.4 GHC 7.6.3 Haskell Platform 2013.2.0.0 ghcをインストール 現時点で最新のghc7.6.3のソースURLをGHC: Download version 7.6.3…

for...in文とeachイテレータのスコープ

array = [1,2,3,4,5] for x in array puts x end array.each do |y| puts y end puts x #=>5 puts y #=>エラーを返す eachメソッド内のブロックは独自のスコープを持つ

Rangeオブジェクトにおけるcase等値演算子の定義とcase文

Rangeオブジェクトにおいてcase等値演算子(===)は以下のように定義される。 左辺(Rangeオブジェクト)が示す範囲内に右辺の値が属していればtrue、それ以外はfalse。 (1..10) === 4 #=> true (1..10) === 10 #=> true (1..10) === 10.1 #=> false case文にお…

入力した文字の文字数を返す

C

#include <stdio.h> #define EOL 10 int main() { int c, length = 0; c = getchar(); while (c != EOF) { if (c == EOL) { printf("%d\n", length); length = 0; } else { length = length + 1; } c = getchar(); } return 0; } getcharは、入力ストリームに文字が存</stdio.h>…

論理演算子&&を定義してみる

class Object def myand(x) if self == nil false elsif self == false false else if x == nil false elsif x == false false else x end end end end a = 5 b = nil a.myand(b) #=> nil (a&&bと同じ役割) 絶対もっと上手い書き方ありますが…。 内部では…

論理演算子||による式の評価

a = "01234" true || a.reverse! #(1) a #=>"01234" この場合、(1)式の左辺のみで(1)式の評価が決定され、右辺は評価されない。

Rubyが変数とメソッドを区別する瞬間

def a 1 end a #=> 1 (メソッドaの実行) a = 0 if false a #=> nil (変数aの参照) a = 2 a #=> 2 (変数aの参照) 以上のように、Rubyは、変数の定義式が現れた瞬間に、aをメソッドではなく変数への参照として扱い始める。 実際の代入が行われているかど…

Rubyは再帰呼び出しを何回出来るか

def endless(x) endless(x-1) if x != 1 end i=1 while(true) do puts i endless(i) i+=1 end 環境によっても違うのかもしれませんが、8735で止まった。

selfとはインスタンス自身の参照である

class Test def initialize @num = 5 end def cp self end attr_accessor :num end test = Test.new test2 = test.cp test2.num=3 pp test.num #=>3 pp test2.num #=>3 より明らか

配列に定義された定数とは?

プログラミング言語 Ruby(93p)にて、以下の様なコードがあった modules[0]::NAME 配列内に存在する定数を参照しているようだが、一体どのように定義できるのか? class Test NAME = "aaa" end modules = Array.new modules[0] = Test.new puts modules[0]::N…