TypeScript勉強会 #1
トランスレートやコンパイルによってJavaScriptの問題点を克服しようという機運
-
CoffeeScript
-
Haxe
import Data.Function | |
import Data.List | |
data Person = Person { name :: String, age :: Int } deriving Show | |
people = [ | |
Person "Joe" 16 | |
, Person "Mary" 8 | |
, Person "Bob" 9 | |
, Person "Mike" 8 |
{- | |
- 課題 | |
- ボウリングのスコアを計算するプログラムを作成する。 | |
- ストライクはX,スペアは/,ガーターは-と表現し、 | |
- ゲームの結果は以下のように入力される。 | |
- XXXXXXXXXXXX #パーフェクト | |
- ------------------/5 # 9フレームまでガーターで10フレームでスペア | |
-} | |
module Main (main) where |
code > span.kw { color: #268BD2; font-weight: bold; } | |
code > span.dt { color: #268BD2; } | |
code > span.dv { color: #D33682; } | |
code > span.bn { color: #D33682; } | |
code > span.fl { color: #D33682; } | |
code > span.ch { color: #4070a0; } | |
code > span.st { color: #2AA198; } | |
code > span.co { color: #93A1A1; font-style: italic; } | |
code > span.ot { color: #A57800; } | |
code > span.al { color: #CB4B16; font-weight: bold; } |
<?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; | |
} | |
/** | |
* マップ | |
* コンストラクタにキーのハッシュ関数を与えて使う。 |