Node.js

https://www.katacoda.com/courses/nodejs/playground

Node.js
const lodash = require('lodash')
console.log(lodash)
  • npm install もできる。
Node.js
const http = require('http')

const handler = (req, res) => {
  res.writeHead(200) // response のヘッドにステータスを書く
  res.end('hello,world') // 返す内容の body
}

const server = http.createServer(handler) // サーバーインスタンスを作る

server.listen(3000, () => console.log('start')) // listern でスタート

アイデア

  • WebSocket 通信を ローカルの Node.js から WebSocket のサーバーにアクセスすれば、ブラウザを立ち上げずに通信できるのでは。
  • さらにローカルの Node.js から OSC を発すれば、Max for Live で受けて何かできるかも。

TypeScript

http://www.typescriptlang.org/play/

TypeScript
const func1 = (num: number): number => num * 2
const res = func1(2)
console.log(2)
  • 基本、値の後ろに : で型をつける。
  • 関数の場合は () が関数の返り値を示しているような雰囲気。

Golang

https://play.golang.org/

Golang
package main

import (
	"fmt"
)

func func1(num int) int {
	return num * 2
}

func func2(x, y int) int {
	return x * y * 2
}

func main() {
	fmt.Println(func1(4))
  fmt.Println(func2(4, 5))
}
  • TypeScript 風の位置に型を書くが、: を使わずに普通に後ろにつける。
  • 関数を定義するには func と書く。 Rust にも似ている。

Rust

https://play.rust-lang.org/

Rust
fn add(num: i32) -> i32 {
    num
}

fn main() {
    println!("{}", add(0));
}
Rust
fn add(num: i32) -> i32 {
    num; // ";" をつけると、返らなくなる。
}

fn main() {
    println!("{}", add(0));
}
  • 関数定義は fn で始める。
  • 引数の型は TypeScript 風に : を値の後ろにつけて「型」だが、返り値の型は -> の後ろに書く。
  • また、OCaml と同じく、明示しなくとも最終行が return される。
  • ; をつけると、何も返らなくなる。
  • return を書いても良い。
  • 文字列の中 " "{} を書くと、そこに値がすっと入る。特に println は文字列しか受け取らないようなので、関数で数字を返す時には、{} を使って文字列に埋め込むこと。

OCaml

https://try.ocamlpro.com/

Ocaml
# let fun1 x = x * 2;;
val fun1 : int -> int = <fun>
# let res = fun1 2;;
val res : int = 4
  • return をしなくても最終行が return される。
  • () 関数の定義にも実行にも使わない。
  • 関数を定義する場合には変数に入れる風なので、JS のアローファンクションのような気持ち。
Ocaml
type my_profile = {
  id: int;
  name: sting;
}
  • type name = {} という部分は TypeScript と同じっぽい。
  • 数字の型は Golang と同じく int。
  • JS のオブジェクトと違って、型定義で name: type; と指定する。; で区切るイメージ。
  • コンマを入れたくなるが、入れたらダメ。
Ocaml
type profile = {id: int; name: string}
let nakanishi = {id= 4; name= "Nakanishi"}
  • type を宣言
  • record オブジェクト的なやつを作ってバインドする。