TypeScript勉強会 #1
トランスレートやコンパイルによってJavaScriptの問題点を克服しようという機運
-
CoffeeScript
-
Haxe
<?php | |
paramsFromArgs($class, $method, $args) { | |
... | |
} | |
class Foo { | |
public function method($a, $b, $c) { | |
$params = static::paramsFromArgs(__CLASS__, __METHOD__, func_get_args()); | |
var_dump($params); |
<?php | |
function combinations() | |
{ | |
$xss = func_get_args(); | |
return array_reduce($xss, function($yss, $xs) { | |
$zs = []; | |
foreach ($yss as $ys) { | |
foreach ($xs as $x) { | |
$zs[] = array_merge($ys, array($x)); | |
} |
<?php | |
class Foo extends CActiveRecord | |
{ | |
$public $derived; | |
public function beforeFind() | |
{ | |
$this->dbCriteria->select = 'col1, col2, col3, deriving(col2) AS derived'; | |
} |
<?php | |
require_once("vendor/autoload.php"); | |
$primes = Ginq::from([2])->concat(Ginq::unfold( | |
Ginq::range(3,null,2), | |
function($xs) { | |
$x = $xs->first(); | |
return [ | |
$x, | |
$xs->drop(1)->filter(['y'=>'y % x != 0', 'x'=>$x]) |
# var がないことによる問題 | |
# 関数sum内の x がローカル変数であることをいつも保証できない | |
# このコメントアウトを外すと sum 内の x はローカル変数でなくなる | |
# x = 100 | |
sum = (n) -> | |
x = 0 | |
for i in [1..n] | |
x += i |
/** | |
* ハッシュ関数 | |
*/ | |
export interface HashFun<A> { | |
(o : A) : string; | |
} | |
/** | |
* マップ | |
* コンストラクタにキーのハッシュ関数を与えて使う。 |
fib(0, 0). | |
fib(1, 1). | |
fib(X, Y1 + Y2) :- fib(X - 1, Y1), fib(X - 2, Y2). | |
%% これだと X - 1 がいつまでも簡約(?) | |
%% されずに停まらなくなるのどうして? | |
% {trace} | |
% | ?- fib(2, What). | |
% 1 1 Call: fib(2,_279) ? | |
% 2 2 Call: fib(2-1,_311) ? | |
% 3 3 Call: fib(2-1-1,_341) ? |
(* seiza int -> string *) | |
let seiza md = | |
if md < 0120 then | |
"牡羊座" | |
else if md <= 0218 then | |
"水瓶座" | |
else if md <= 0320 then | |
"魚座" | |
else if md <= 0419 then | |
"牡羊座" |
(* string * string -> string *) | |
let seiseki name_seiseki_pair = | |
match name_seiseki_pair with | |
(n, s) -> n ^ "さんの評価は" ^ s ^ "です" | |
let seiseki1 = seiseki ("カネハラ", "最悪") = "カネハラさんの評価は最悪です" | |
let seiseki2 = seiseki ("山田", "最高") = "山田さんの評価は最高です" | |
let seiseki3 = seiseki ("鈴木", "普通") = "鈴木さんの評価は普通です" |