プログラミング言語の基礎となる計算モデル、および意味論について学び、プログラムの挙動に関する厳密な推論やプログラミング言語およびその処理系の正しい設計を行えるようにする。
講義の前半はプログラミング言語の基本的な意味論を学び、後半ではλ計算を代表とする計算モデルおよび型システム等について学ぶ。
第1回:導入
| from typing import Dict, Set | |
| def incrementDate(date: Dict[str, int]) -> None: | |
| if date["month"] == 12 and date["day"] == 31: | |
| date["year"] += 1 | |
| date["month"] = 1 | |
| date["day"] = 1 | |
| elif date["day"] == 31: | |
| date["month"] += 1 | |
| date["day"] = 1 |
| \documentclass[dvipdfmx]{jsarticle} | |
| \usepackage{amsmath,amssymb,ascmac,geometry,graphicx,listings,newpxtext,url,physics} | |
| \geometry{margin=1.5cm} | |
| \renewcommand{\lstlistingname}{Program} | |
| \lstset{ | |
| basicstyle={\ttfamily}, | |
| identifierstyle={\small}, | |
| commentstyle={\smallitshape}, | |
| keywordstyle={\small\bfseries}, |
| (* デバッグ用 *) | |
| let rec print_env env = | |
| match env with | |
| | (x, v) :: rest -> (print_string (x^"="); print_value v; print_string " "; (print_env rest)) | |
| | _ -> print_string "\n" |
| type 'a m = 'a list | |
| let (>>=) x f = List.concat (List.map f x) | |
| let return x = [x] | |
| let guard b = if b then return () else [] | |
| let numbers = [1; 2; 3; 4; 5; 6; 7; 8] | |
| let rec remove l n = | |
| match l with | |
| | [] -> [] |
| for file in `find *.zip` | |
| do | |
| zip ${file} -d "*.DS_Store" | |
| zip ${file} -d "*__MACOSX*" | |
| done |
componentWillReceiveProps が今は legacy になっているのを知らずに使っていてびっくりしたので、https://reactjs.org/docs/react-component.html から知らなかった部分をメモ
はい
shouldComponentUpdate() が false を返すときは発火しない
| { | |
| "editor.tabSize": 4 | |
| } |
| for ($i=0; $i -lt 10; $i++){ | |
| mkdir ("HOGE00" + $i) | |
| } |
| dir | rename-item -newname { $_.name -replace 'hoge', 'fuga' } |