C - プロセス間通信 - お話は楽しい - ファイルディスクリプタ, データストリームの複製, dup2関数
Head First C ―頭とからだで覚えるCの基本、 David Griffiths(著)、 Dawn Griffiths(著)、 中田 秀基(監修)、 木下 哲也(翻訳)、 O’Reilly Media)の 10章(プロセス間通信 - お話は楽しい)、p.435(自分で考えてみよう)の解答を求めてみる。
Makefile
all: newsbound2
newsbound2: newsbound2.c
cc newsbound2.c -o newsbound2
コード
newsbound2.c
#include <stdio.h>
#include <errno.h>
#include <string.h>
#include <unistd.h>
#include <stdlib.h>
void error(char *msg)
{
fprintf(stderr, "%s:%s\n", msg, strerror(errno));
exit(1);
}
int main(int argc, char *argv[])
{
char *phrase = argv[1];
char *vars[] = {"RSS_FEED=https://cs.mkamimura.com/posts/index.xml", NULL};
FILE *f = fopen("stories.txt", "w");
if (!f)
{
error("stories.txtを開けません。");
}
pid_t pid = fork();
if (pid == -1)
{
error("プロセスをフォークできません。");
}
if (!pid)
{
if (dup2(fileno(f), fileno(stdout)) == -1)
{
error("標準出力をリダイレクトできません。");
}
if (execle("/opt/local/bin/python", "/opt/local/bin/python", "rssgossip.py",
phrase, NULL, vars) == -1)
{
fprintf(stderr, "スクリプトを実行できません:%s\n", strerror(errno));
}
}
}
入出力結果(Terminal, Zsh)
% make
cc newsbound.c -o newsbound
% ./newsbound 関数 > temp.txt
%
出力結果
stories.txt
C - プロセスとシステムサービス - 限界を超える - fork関数, 子プロセス
C - プロセスとシステムサービス - 限界を超える - execlp関数, unistdヘッダー, strerr関数, stringヘッダー, errnoヘッダー
C - プロセスとシステムサービス - 限界を超える - system関数, コマンド
Haskell - コンテキストでの型の操作 - コンテキストとしてのリスト:Applicative型クラスをさらに掘り下げる - リスト, pure関数, <*>演算子
Haskell - コンテキストでの型の操作 - コンテキストとしてのリスト:Applicative型クラスをさらに掘り下げる - Maybe型, Just, pure関数, <*>演算子
Haskell - コンテキストでの型の操作 - コンテキストとしてのリスト:Applicative型クラスをさらに掘り下げる - 汎用パージョンのfmap関数, pure関数, <*>演算子
C - 高度な関数 - 関数を最大限に活用する - 可変数の引数
C - 高度な関数 - 関数を最大限に活用する - 関数ポインタ, 配列
C - 高度な関数 - 関数を最大限に活用する - enum, データ型
Haskell - コンテキストでの型の操作 - Applicative型クラス:関数をコンテキスト内で使用する - レコード構文
C - 高度な関数 - 関数を最大限に活用する - 順序の設定, qsort関数
Haskell - コンテキストでの型の操作 - Applicative型クラス:関数をコンテキスト内で使用する - <*>演算子
C - 高度な関数 - 関数を最大限に活用する - 関数ポインタの作成方法
Haskell - コンテキストでの型の操作 - Applicative型クラス:関数をコンテキスト内で使用する - IO
C - 高度な関数 - 関数を最大限に活用する - string.h, strstr関数, 部分文字列
Haskell - コンテキストでの型の操作 - Applicative型クラス:関数をコンテキスト内で使用する - <*>を使ってデータをコンテキスト内で作成する
C - データ構造と動的メモリ - 架け橋を築く - 空間の開放, free関数
Haskell - コンテキストでの型の操作 - Applicative型クラス:関数をコンテキスト内で使用する - <$>と<*>を使って複数の引数を持つ関数をIOで呼びだす
C - データ構造と動的メモリ - 架け橋を築く - malloc関数, 文字列のコピー, strdup関数
Haskell - コンテキストでの型の操作 - Applicative型クラス:関数をコンテキスト内で使用する - コンテキストでの部分適用に<*>を使用する
Haskell - コンテキストでの型の操作 - Applicative型クラス:関数をコンテキスト内で使用する - Functorの制限
Haskell - コンテキストでの型の操作 - Applicative型クラス:関数をコンテキスト内で使用する - 2つの都市の距離を計算するコマンドラインアプリケーション
Haskell - コンテキストでの型の操作 - Functor型クラス - fmap関数, <$>演算子, Maybe型
Haskell - コンテキストでの型の操作 - Functor型クラス - fmap関数、Box型、wrap関数、unwrap関数
Haskell - コンテキストでの型の操作 - Functor型クラス - instance, fmap関数, replicate関数, List
Haskell - コンテキストでの型の操作 - Functor型クラス - instance, fmap関数
Haskell - コンテキストでの型の操作 - Functor型クラス - Functorクラスのコンテキストで関数を使用する
C - 複数のソースファイルの使用 - 分割して構築する - 関数, 定義から宣言を分離する
HaskellのI/O - ファイル操作 - ファイルを開いて閉じる - Data.Text, toUpper関数, Data.Text.IO, readFile関数
HaskellのI/O - ファイル操作 - ファイルを開いて閉じる - readFile関数, writeFile関数, Data.Text.IO, 正格なI/O
HaskellのI/O - ファイル操作 - ファイルを開いて閉じる - hIsEOF関数, hGetLine関数
HaskellのI/O - ファイル操作 - ファイルを開いて閉じる - System.IOモジュール, openFile関数
C - 文字列 - 文字列理論 - fgets関数, strlen関数
HaskellのI/O - テキストとUnicodeの操作 - Data.Textを使用する - splitOn関数, intercalate関数
C - 文字列 - 文字列理論 - stringヘッダー, strstr関数, 部分文字列の検索
HaskellのI/O - テキストとUnicodeの操作 - Data.Textを使用する - pack, unpack関数
HaskellのI/O - コマンドラインの操作と遅延I/O - 遅延評価を使用する方法 - getContents関数
Cを始める - Cの世界に飛び込む - インクルード文、関数
Haskell - 型によるプログラミング - Maybe型:欠損値に対処する - Maybe型に対応するmap関数
Haskell - 型によるプログラミング - パラメータ化された型 - Triple型、Box型、map関数
Haskell - 型によるプログラミング - 合成によるデザイン:SemigroupとMonoid - 合成可能性:関数を組み合わせる)
型の紹介 - 型クラス - Enum, Bounded, インスタンス、Int型、succ関数
型の紹介 - カスタム型の作成 - ヘルパー関数
型の紹介 - 型の基礎 - 型変数 - tail関数、head関数、型シグネチャ、安全なtail
型の紹介 - 型の基礎 - 型変数 - filter関数、map関数、型シグネチャ
型の紹介 - 型の基礎 - 型変数 - map関数と型変数
型の紹介 - 型の基礎 - 関数の型 - 複数の引数を持つ関数
型の紹介 - 型の基礎 - 関数の型 - 文字列への変換と文字列からの変換を行う関数、show
型の紹介 - 型の基礎 - 関数の型 - div関数、型シグネチャ
関数型プログラミングの基礎 - 高階関数 - 関数(filter, length, elem, map, sum)、回文、調和級数、遅延許価
関数型プログラミングの基礎 - 高階関数 - リストの畳み込み、foldl、二項関数、初期値, 総乗
関数型プログラミングの基礎 - 高階関数 - リストのフィルタリング
関数型プログラミングの基礎 - 再帰関数の記述 - reverse関数、効率的なフィボナッチ数の計算
関数型プログラミングの基礎 - 再帰関数の記述 - length関数
関数型プログラミングの基礎 - 再帰ルールとパターンマッチング - 空リストとtail関数、最大公約数、ユークリッド互除法
関数型プログラミングの基礎 - 再帰ルールとパターンマッチング - 最初の再帰関数:パターンマッチング - 引数、tail関数の定義
関数型プログラミングの基礎 - リスト - 一般的な関数(take, drop, elem)
関数型プログラミングの基礎 - リスト - リストと遅延評価
関数型プログラミングの基礎 - クロージャと部分適用 - シンプルなパターン、二項関数、引数
関数型プログラミングの基礎 - クロージャと部分適用 - even関数
関数型プログラミングの基礎 - クロージャと部分適用 - すべてを1つにまとめる - flip関数、中置演算子、前置関数
関数型プログラミングの基礎 - クロージャと部分適用 - APIで使用するURLの生成 - クロージャの単純化
関数型プログラミングの基礎 - クロージャと部分適用 - APIで使用するURLの生成
関数型プログラミングの基礎 - クロージャと部分適用 - 関数を使って関数を作成する
関数型プログラミングの基礎 - ファーストクラス関数 - 関数を返す関数、case式
関数型プログラミングの基礎 - ファーストクラス関数 - compare関数、GT、LT、EQ
関数型プログラミングの基礎 - ファーストクラス関数 - 引数としての関数 - 例:カスタムソート、sortBy関数
関数型プログラミングの基礎 - ファーストクラス関数 - 引数としての関数 - 引数としてのラムダ式
関数型プログラミングの基礎 - ラムダ関数とレキシカルスコープ - ラムダ関数の記述、let式
関数型プログラミングの基礎 - ラムダ関数とレキシカルスコープ - ラムダからletへ:カスタム変数を変更可能にする
関数型プログラミングの基礎 - ラムダ関数とレキシカルスコープ - 独自のwhere句を記述する
関数型プログラミングの基礎 - ラムダ関数とレキシカルスコープ - ラムダ関数 - 記述方法
関数型プログラミングの基礎 - コードの関数と関数型プログラミング - 関数型プログラミングの実用的価値 - 関数の制限、if/then/else
関数型プログラミングの基礎 - コードの関数と関数型プログラミング - 関数型プログラミングの実用的価値 - 変更可能な変数、GHCi
関数型プログラミングの基礎 - コードの関数と関数型プログラミング - 関数型プログラミングの実用的価値 - 変数、where句
実践Haskell Aesonを使ったJSONデータの処理 データ型をFromJSONとToJSONのインスタンスにする 独自に記述する toJSON関数
実践Haskell Aesonを使ったJSONデータの処理 データ型をFromJSONとToJSONのインスタンスにする 独自に記述する parseJSON関数
実践Haskell Aesonを使ったJSONデータの処理 データ型をFromJSONとToJSONのインスタンスにする Genericsモジュール、encode関数、decode関数
実践Haskell HaskellのエラーとEither型 部分関数、安全なバージョン、succ関数、tail関数、last関数、Maybe型
実践Haskell HaskellのエラーとEither型 head関数、部分関数、エラー maximum関数、succ関数
実践Haskell HaskellのエラーとEither型 head関数、部分関数、エラー
コードの整理とプロジェクトのビルド Haskellコードをモジュールにまとめる Preludeの関数と同じ名前の関数を記述したらどうなるか 対処方法
コンテキストでの型の操作 リストモナドとリスト内包 カレンダーの日付のリスト、do表記、guard関数、ラムダ
コンテキストでの型の操作 リストモナドとリスト内包 リストモナドを使ってリストを生成する guard関数 Control.Monadモジュール
コンテキストでの型の操作 Monad型クラス Maybe版(>>=)の実装、bind関数
コンテキストでの型の操作 Monad型クラス (<*>)、汎用バージョンallMap、ラムダ関数
コンテキストでの型の操作 Monad型クラス ApplicativeとFunctorの制限 2つのMap.lookupを組み合わせる pure関数
コンテキストでの型の操作 コンテキストとしてのリスト:Applicative型クラスをさらに掘り下げる pure関数、<*>演算子
コンテキストでの型の操作 Applicative型クラス:関数をコンテキスト内で使用する Data.Mapモジュール、lookup関数、Maybe型
コンテキストでの型の操作 Applicative型クラス:関数をコンテキスト内で使用する <$>演算子、<*>演算子、IO
コンテキストでの型の操作 Applicative型クラス:関数をコンテキスト内で使用する do表記
コンテキストでの型の操作 Applicative型クラス:関数をコンテキスト内で使用する <*>を使ってデータをコンテキスト内で作成する Maybeのコンテキスト内でユーザーを作成する
コンテキストでの型の操作 Applicative型クラス:関数をコンテキスト内で使用する コンテキストでの部分適用に<*>を使用する <$>と<*>を使って複数の引数を持つ関数をIOで呼び出す
コンテキストでの型の操作 Applicative型クラス:関数をコンテキスト内で使用する コンテキストでの部分適用に<*>を使用する <*>演算子
コンテキストでの型の操作 Applicative型クラス:関数をコンテキスト内で使用する 2つの都市の距離を計算するコマンドラインアプリケーション Functorの制限
コンテキストでの型の操作 Applicative型クラス:関数をコンテキスト内で使用する 2つの都市の距離を計算するコマンドラインアプリケーション Maybe型、Int型、加算
コンテキストでの型の操作 Functor型クラス Box型、fmap関数、unwrap関数
コンテキストでの型の操作 Functor型クラス Functor、インスタンス、fmap関数
コンテキストでの型の操作 Functor型クラス Functorはいつもそばにいる リスト、fmap関数とmap関数、<$>演算子
コンテキストでの型の操作 Functor型クラス Functor型クラスのコンテキストで関数を使用する
HaskellのI/O ファイル操作 大文字化、Data.Textモジュール、toUpper関数
HaskellのI/O ファイル操作 cpプログラムの実装、readFile関数、writeFile関数
HaskellのI/O ファイル操作 遅延I/Oの問題 readFile関数
HaskellのI/O ファイル操作 ファイルを開いて閉じる ファイルハンドル、hGetLine関数、hIsEOF関数、hPutStrLn関数
HaskellのI/O ファイル操作 ファイルを開いて閉じる System.IOモジュール、openFile関数、IOMode、ReadMode
HaskellのI/O テキストとUnicodeの操作 Text型 String型と変換、Data.Textモジュール、pack関数
HaskellのI/O コマンドラインの操作と遅延I/O コマンドラインの操作:遅延評価を使用する方法 getContents関数
型によるプログラミング Maybe型:欠損値に対処する Maybe型版map関数
型によるプログラミング Maybe型:欠損値に対処する Data.Maybeモジュール、isNothing関数
型によるプログラミング Maybe型:欠損値に対処する Maybeを使った計算 JustとNothing、パターン、関数
型によるプログラミング パラメータ化された型 Data.Mapモジュール、キー、lookup関数、Ord
型によるプログラミング パラメータ化された型 map関数
型によるプログラミング 合成によるデザイン:SemigroupとMonoid 合成可能性:関数を組み合わせる
型の紹介 型クラスを使用する Enum、fromEnum関数、Eq、Ord
型の紹介 型クラス Enum、Boundedインスタンス、エラーにならないsucc関数を実装
型の紹介 型クラス Enum、Boundedインスタンス、succ関数
型の紹介 型の基礎 foldl関数、型シグネチャ
型の紹介 型の基礎 空リスト、head関数とtail関数の型シグネチャ
型の紹介 型の基礎 型変数 map関数の型
型の紹介 型の基礎 関数の型 字列への変換と文字列からの変換を行う関数 show関数、型シグネチャ
型の紹介 型の基礎 関数の型 div関数
関数型プログラミングの基礎 高階関数 調和級数の総和、遅延評価
関数型プログラミングの基礎 高階関数 filter関数とmap関数、空白、小文字、回文
関数型プログラミングの基礎 高階関数 filter関数とlength関数によるelem関数の実装
関数型プログラミングの基礎 高階関数 リストの畳み込み 総乗、リスト、product関数の実装、foldl関数、初期値
関数型プログラミングの基礎 高階関数 リストのフィルタリング filter関数、remove関数の実装
関数型プログラミングの基礎 再帰関数の記述 フィボナッチ数を効率よく計算する関数の実装
関数型プログラミングの基礎 再帰関数の記述 reverseを実装、パターンマッチ、引数
関数型プログラミングの基礎 再帰関数の記述 リストでの再帰 lengthを実装する パターンマッチ
関数型プログラミングの基礎 再帰のルールとパターンマッチング ユークリッドの互除法
関数型プログラミングの基礎 再帰のルールとパターンマッチング 最初の再帰関数:最大公約数 パターンマッチング
関数型プログラミングの基礎 再帰のルールとパターンマッチング 最初の再帰関数:最大公約数 ユークリッドの互除法
関数型プログラミングの基礎 リスト take関数、elem関数
関数型プログラミングの基礎 リスト take関数、drop関数
関数型プログラミングの基礎 リスト repeat関数を独自に実装、cycle関数
関数型プログラミングの基礎 クロージャと部分的用 二項係数、不明な引数を待機、ラムダ関数
関数型プログラミングの基礎 クロージャと部分的用 even関数、if/else/then
関数型プログラミングの基礎 クロージャと部分的用 すべてを1つにまとめる flip関数
関数型プログラミングの基礎 クロージャと部分的用 例:APIで使用するURLの作成 部分的用:クロージャの単純化
関数型プログラミングの基礎 クロージャと部分的用 例:APIで使用するURLの作成
関数型プログラミングの基礎 クロージャと部分的用 クロージャ:関数を使って関数を作成する
関数型プログラミングの基礎 ファーストクラス関数 戻り値としての関数、ディスパッチ
関数型プログラミングの基礎 ファーストクラス関数 compare関数
関数型プログラミングの基礎 ファーストクラス関数 引数としての関数 例:カスタムソート Data.Listモジュール、sortBy関数
関数型プログラミングの基礎 ラムダ関数とレキシカルスコープ 入れ子のラムダ式
関数型プログラミングの基礎 ラムダ関数とレキシカルスコープ 書き換え、記述、平方の和と和の平方、大小
関数型プログラミングの基礎 ラムダ関数とレキシカルスコープ 匿名関数、無名関数
関数型プログラミングの基礎 関数と関数型プログラミング if/then/else、even関数、剰余関数、mod関数
関数型プログラミングの基礎 関数と関数型プログラミング インクリメント
関数型プログラミングの基礎 関数と関数型プログラミング where句
実践Haskell 効率的でステートフルな配列 Data.Array.STモジュール、writeArray関数、Control.Monadモジュール、when関数
実践Haskell 効率的でステートフルな配列 UArrayとSTUArray、thaw関数、クロスオーバー
実践Haskell 効率的でステートフルな配列 バブルソートを実装する runSTUArray関数、newArray関数、writeArray関数
実践Haskell 効率的でステートフルな配列 UArray型を使って効率のよい配列を作成する UArrayを更新する accum関数
実践Haskell Aesonを使ったJSONデータの処理 データ型をFromJSONとToJSONのインスタンスにする FromJSONとToJSONのインスタンスを独自に記述する parseJSON関数、Maybe、(<$>)、(<*>)、(.:)
実践Haskell HTTPリクエストの作成 getResponseStatus関数
実践Haskell HTTPリクエストの作成 SSLをサポートしない場合、setRequestSecure関数
実践Haskell HTTPリクエストの作成 HTTP.Simpleモジュールを使用する getResponseHeaders関数
入門Haskell Monad型クラス HaskellのエラーとEither型 Either型 安全なsucc、tail、last関数、Maybe型、リスト、maxBound
実践Haskell Monad型クラス HaskellのエラーとEither型 head関数、部分関数、エラー head関数と部分関数
実践Haskell Monad型クラス HaskellのエラーとEither型 head関数、部分関数、エラー パターンマッチ
コードの整理とプロジェクトのビルド Monad型クラス Haskellコードをモジュールにまとめる プログラムを複数のファイルに分割する 関数のエクスポート
コードの整理とプロジェクトのビルド Monad型クラス Haskellコードをモジュールにまとめる Preludeの関数と同じ名前の関数を記述したらどうなるか
コンテキストでの型の操作 Monad型クラス リストモナドとリスト内包 リストモナドを使ってリストを生成する guard関数
コンテキストでの型の操作 Monad型クラス ApplicativeとFunctorの制限 Maybeに対するbind関数の実装
コンテキストでの型の操作 Monad型クラス ApplicativeとFunctorの制限 <*>の汎用バージョンのallApp関数の実装
コンテキストでの型の操作 Monad型クラス ApplicativeとFunctorの制限 <$>の汎用バージョンのallFmapM関数、ラムダ、return
コンテキストでの型の操作 Monad型クラス ApplicativeとFunctorの制限 Monad型クラス Monadを使ってHello Nameプログラムを作成する return関数、ラムダ
コンテキストでの型の操作 コンテキストとしてのリスト:Applicative型クラスをさらに掘り下げる 式の変換、pure関数、<*>
コンテキストでの型の操作 コンテキストとしてのリスト:Applicative型クラスをさらに掘り下げる 対応するfmap関数、pure関数、ListとMaybe
コンテキストでの型の操作 Applicative型クラス:関数をコンテキスト内で使用する Map型、lookup関数、Maybe、<$>と<*>
コンテキストでの型の操作 Applicative型クラス:関数をコンテキスト内で使用する <$>と<*>とIOアクション、do表記
コンテキストでの型の操作 Applicative型クラス:関数をコンテキスト内で使用する <*>を使わない場合 IOアクション、do表記
コンテキストでの型の操作 Applicative型クラス:関数をコンテキスト内で使用する <*>を使ってデータをコンテキスト内で作成する レコード構文、Maybe型、Nothing
コンテキストでの型の操作 Applicative型クラス:関数をコンテキスト内で使用する コンテキストでの部分適用に<*>を使用する <$>と<*>を使って複数の引数を持つ関数をIOで呼び出す Maybe型
コンテキストでの型の操作 Applicative型クラス:関数をコンテキスト内で使用する コンテキストでの部分適用に<*>を使用する
コンテキストでの型の操作 Applicative型クラス:関数をコンテキスト内で使用する 2つの都市の距離を計算するコマンドラインアプリケーション Functorの制限 部分適用
コンテキストでの型の操作 Applicative型クラス:関数をコンテキスト内で使用する 2つの都市の距離を計算するコマンドラインアプリケーション Maybe Int型の和
コンテキストでの型の操作 Functor型クラス fmap関数、Box、入れ子
コンテキストでの型の操作 Functor型クラス インスタンス、fmap関数
コンテキストでの型の操作 Functor型クラス Functor型クラスのコンテキストで関数を使用する fmap関数、<$>演算子
HaskellのI/O バイナリデータの操作 ByteString型とText型、文字数、Data.Text.Encodingモジュール、decodeUtf8関数
HaskellのI/O バイナリデータの操作 JPEGのグリッチング ランダムなバイトを挿入する System.Randomモジュール、randomRIO関数
HaskellのI/O バイナリデータの操作 ByteStringを使ってバイナリデータを操作する Int型に変換、unpack関数、Data.ByteString.Char8モジュール
HaskellのI/O ファイルの操作 大文字化、Data.Text.IOモジュール、readFile関数、writeFile関数
HaskellのI/O ファイルの操作 Unixのcpプログラムの実装、正格なI/O、Data.Textモジュール、Data.Text.IOモジュール、Text型、readFile関数、writeFile関数
HaskellのI/O ファイルの操作 単純なI/Oツール 文字の結合、String型、Data.Text型、unwords関数
HaskellのI/O ファイルの操作 ファイルを開いて閉じる System.IOモジュール、EOF、hIsEOF関数
HaskellのI/O ファイルの操作 ファイルを開いて閉じる System.IOモジュール、openFile関数
HaskellのI/O テキストとUnicodeの操作 入出力、Data.Text.Lazy、入出力、getContents関数
HaskellのI/O テキストとUnicodeの操作 入出力、Data.Text.IOモジュール、getLine関数、putStrLn関数
HaskellのI/O テキストとUnicodeの操作 Data.Textを使用する 基本的なテキストユーティリティT.splitOnによるT.lines関数、T.intercalateによるT.unlines関数の実装
HaskellのI/O テキストとUnicodeの操作 Data.Textモジュール、pack関数、unpack関数 Haskellの言語拡張:OverloadedStrings コンパイル、LANGUAGEプラグマ
HaskellのI/O テキストとUnicodeの操作 Data.Textモジュール、pack関数、unpack関数
HaskellのI/O コマンドラインの操作と遅延I/O 標準入力、getContents関数、lines関数
HaskellのI/O コマンドラインの操作と遅延I/O コマンドライン操作:遅延評価を使用する方法 逆順、reverse関数
HaskellのI/O コマンドラインの操作と遅延I/O コマンドライン操作:遅延評価を使用しない方法 mapM関数によるreplicateM関数の実装
HaskellのI/O コマンドラインの操作と遅延I/O コマンドライン操作:遅延評価を使用しない方法 getLine関数、mapM関数、mapM_関数
HaskellのI/O Hello World!:IO型の紹介 入力、数値、read関数
HaskellのI/O Hello World!:IO型の紹介 getLine関数と型
型によるプログラミング Maybe型:欠損値に対処する Maybe型に対応するmap関数の実装
型によるプログラミング Maybe型:欠損値に対処する Maybeを使った計算 関数と引数
型によるプログラミング パラメータ化された型 Data.Mapモジュール、Map型、fromList関数、toList関数、lookup関数、key、順序
型によるプログラミング パラメータ化された型 TripleとBox、map関数
型によるプログラミング パラメータ化された型 入れ子 Triple:より便利なパラメータ化された型 リスト、map関数との比較
型によるプログラミング 合成によるデザイン:SemigroupとMonoid 合成可能性:関数を組み合わせる any関数の独自実装
型の紹介 型クラスを使用する Ord型クラス、Eq型クラス、Enum型クラスの派生実装、fromEnum関数
型の紹介 型クラスを使用する Ordを実装する compare関数
型の紹介 型クラス Int型、Enum型クラス、Bounded型クラス、succ関数の独自実装、Eq型クラス
型の紹介 型クラス Int型、Enum型クラス、succ関数、Bounded型クラス、minBoundとmaxBound
型の紹介 カスタム型の作成 レコード構文、フィールドの値の取り出し、出力、文字列、show関数
型の紹介 カスタム型の作成 レコード構文、フィールドの値の取り出し、関数
型の紹介 型の基礎 リスト、head関数、foldl関数の型シグネチャ
型の紹介 型の基礎 filter関数とmap関数の型シグネチャ
型の紹介 型の基礎 関数の型 複数の引数を持つ関数 部分適用
型の紹介 型の基礎 関数の型 文字列への変換と文字列からの変換を行う関数 整数、Int型、show関数
型の紹介 型の基礎 関数の型 整数の除算、商、div関数
関数型プログラミングの基礎 高階関数 調和級数、リスト、foldl関数、ラムダ、sum関数、zip関数、map関数
関数型プログラミングの基礎 高階関数 回文か判定、空白文字や大文字への対応、Data.Charモジュール、isSpace関数、toLower関数、map関数、filter関数、reverse関数
関数型プログラミングの基礎 高階関数 リスト、要素、elem関数のfilter関数とlength関数による実装
関数型プログラミングの基礎 高階関数 リストの畳み込み
関数型プログラミングの基礎 再帰関数の記述 効率よくフィボナッチ数を計算する方法
関数型プログラミングの基礎 再帰関数の記述 リスト、パターンマッチングによるreverse関数の独自実装
関数型プログラミングの基礎 再帰関数の記述 リストでの再帰 lengthを実装する パターンマッチング
関数型プログラミングの基礎 再帰のルールとパターンマッチング 最大公約数、ユークリッド互除法、剰余、mod関数、中間演算子、backquote
関数型プログラミングの基礎 再帰のルールとパターンマッチング 空のリストでエラーにならないtail関数の実装
関数型プログラミングの基礎 再帰のルールとパターンマッチング 最初の再帰関数:最大公約数 リストのtail関数のパターンマッチングを使った独自実装
関数型プログラミングの基礎 リスト サブシーケンス、開始位置、終了位置、drop関数、take関数
関数型プログラミングの基礎 リスト 繰り返し、cycle関数によるrepeat関数の実装
関数型プログラミングの基礎 クロージャと部分適用 中間演算子、ラムダ関数
関数型プログラミングの基礎 クロージャと部分適用 中間演算子、if式、偶奇の判定、even関数
関数型プログラミングの基礎 クロージャと部分適用 すべてを1つにまとめる 引数の順序、入れ替え、flip関数、中間演算子、括弧
関数型プログラミングの基礎 クロージャと部分適用 例:APIで使用するURLの生成 部分適用:クロージャの単純化
関数型プログラミングの基礎 クロージャと部分適用 例:APIで使用するURLの生成
関数型プログラミングの基礎 クロージャと部分適用 クロージャ:関数を使って関数を作成する
関数型プログラミングの基礎 ファーストクラス関数 戻り値としての関数 case式、場合分け
関数型プログラミングの基礎 ファーストクラス関数 compare関数、LT、GT、EQ
関数型プログラミングの基礎 ラムダ関数とレキシカルスコープ let式とラムダ式の比較
関数型プログラミングの基礎 ラムダ関数とレキシカルスコープ ラムダ式への書き換え 平方の和と和の平方
関数型プログラミングの基礎 ラムダ関数とレキシカルスコープ 引数
関数型プログラミングの基礎 関数と関数型プログラミング if/then/else、even関数、偶奇の判定
関数型プログラミングの基礎 関数と関数型プログラミング 変数、where句、GHCi、letキーワード
実践Haskell 効率的でステートフルな配列 STUArrayを使って状態を変化させる、writeArray関数、when関数、真偽値
実践Haskell 効率的でステートフルな配列 STUArrayを使って状態を変化させる、writeArray関数、クロスオーバー(交叉)、限界値条件、先頭と末尾
実践Haskell 効率的でステートフルな配列 UArray型を使って効率のよい配列を作成する 明確な初期化、リスト、範囲、zip関数、cycle関数
実践Haskell のデータベースの使用 データの作成、接続、execute関数、ツールの追加
実践Haskell Aesonを使ったJSONデータの処理 独自のInt型のリストを作成、インスタンス、ToJSON、toJSON関数、Generics
実践Haskell Aesonを使ったJSONデータの処理 インスタンス、ToJSON、toJSON関数、(.=)演算子
実践Haskell Aesonを使ったJSONデータの処理 データ型をFromJSONとToJSONのインスタンスにする 独自に記述、parseJSON関数、fromJSON関数、(.:)演算子、(.=)演算子
実践Haskell Aesonを使ったJSONデータの処理 データ型をFromJSONとToJSONのインスタンスにする 簡単な方法 encode関数、decode関数、言語拡張、LANGUAGEプラグマ、DeriveGeneric、Generic、レコード構文
実践Haskell HaskellでのHTTPリクエストの作成 失敗、メッセージの取得、getResponseStatus関数
実践Haskell HaskellでのHTTPリクエストの作成 SSL、setRequestSecure関数、真偽値
実践Haskell HaskellのエラーとEither型 部分関数、Enum、リスト、succ関数、tail関数、last関数、安全な版、Myabe、コンストラクタ、Just、Nothing、Left、Right
実践Haskell HaskellのエラーとEither型 文字列の解析、数値、Data.Charモジュール、isDigit関数
実践Haskell HaskellのエラーとEither型 head関数と部分関数 maximum関数、succ関数、sum関数、失敗する入力
コードの整理とプロジェクトのビルド QuickCheckを使ったプロパティテスト QuickCheckによるプロパティテスト quickCheck関数、stack testコマンド
コードの整理とプロジェクトのビルド QuickCheckを使ったプロパティテスト 新しいプロジェクトを開始する モジュール、全ての関数のエクスポート
コードの整理とプロジェクトのビルド Haskellコードをモジュールにまとめる モジュールを使ってプログラムを複数のファイルに分割する 回文、関数のインポートとエクスポート
コードの整理とプロジェクトのビルド Haskellコードをモジュールにまとめる Preludeの関数と同じ名前の関数を記述したらどうなるか Main、Prelude、length関数
コンテキストでの型の操作 リストモナドとリスト内包表記 カレンダーの日付、リストのリスト、入れ子、do表記、Monadのメソッド、>>=演算子とラムダ関数、return
コンテキストでの型の操作 リストモナドとリスト内包表記 リスト内包 大文字化、Data.Charモジュールj、toUpper関数
コンテキストでの型の操作 リストモナドとリスト内包表記 リストモナドを使ってリストを生成する guard関数 filter関数の実装
コンテキストでの型の操作 do表記を使ってMonadを扱いやすくする do表記を>>=演算子、>>演算子、return、ラムダ関数で書き換える
コンテキストでの型の操作 Monad型クラス Maybeに対するbind関数の定義、Just、Nothing
コンテキストでの型の操作 Monad型クラス Applicativeよりも強力であることの証明、<*>演算子の汎用版、メソッド、>>=演算子、ラムダ関数、return
コンテキストでの型の操作 Monad型クラス <$>の汎用版、必須メソッド、>>=演算子、ラムダ関数、return
コンテキストでの型の操作 コンテキストとしてのリスト:Applicative型クラスをさらに掘り下げる 非決定論的な計算、pure関数、<*>演算子
コンテキストでの型の操作 コンテキストとしてのリスト:Applicative型クラスをさらに掘り下げる 式の書き換え、Maybe型、pure関数、<*>演算子
コンテキストでの型の操作 コンテキストとしてのリスト:Applicative型クラスをさらに掘り下げる fmap関数の汎用バージョン、Functor、pure関数、<*>演算子
コンテキストでの型の操作 コンテキストとしてのリスト:Applicative型クラスをさらに掘り下げる 例:クイズ番組 非決定論的な選択肢 pure関数、<*>演算子
コンテキストでの型の操作 Applicative型クラス:関数をコンテキスト内で使用する ユーザー入力、Maybe型、<$>演算子(Functor)と<*>演算子
コンテキストでの型の操作 Applicative型クラス:関数をコンテキスト内で使用する <$>演算子(Functor)と<*>演算子、IO
コンテキストでの型の操作 Applicative型クラス:関数をコンテキスト内で使用する <*>演算子や<$>演算子(Functor)を使わない場合
コンテキストでの型の操作 Applicative型クラス:関数をコンテキスト内で使用する <*>を使ってデータをコンテキスト内で作成する 欠損値、Maybe型、Nothing
コンテキストでの型の操作 Applicative型クラス:関数をコンテキスト内で使用する コンテキストでの部分適用に<*>を使用する <*>演算子、<$>と<*>を使って複数の引数を持つ関数をIOで呼び出す
コンテキストでの型の操作 Functor型クラス fmap関数、Map型、lookup関数、欠測値、Maybe型
コンテキストでの型の操作 Functor型クラス 単純なBox、BoxのBox、値の取得、fmap関数
コンテキストでの型の操作 Functor型クラス インスタンス化、fmap関数、リスト、変換
コンテキストでの型の操作 Functor型クラス Functor型クラスのコンテキストで関数を使用する fmap関数、二項演算子<$>
HaskellのI/O バイナリデータの操作 バイトセクション、逆順、Data.ByteString.Char8モジュール、reverse関数、乱数の生成、System.Randomモジュール、randomRIO関数
HaskellのI/O バイナリデータの操作 ByteStringとUnicode、文字数とバイト数、Data.Text.Encodingモジュール、encodeUtf8関数
HaskellのI/O バイナリデータの操作 JPEGのグリッチング ランダムなバイトを挿入する System.Randomモジュール、RandomRIO関数、minBound関数、maxBound関数、Char型
HaskellのI/O バイナリデータの操作 ByteStringを使ってバイナリデータを操作する Data.ByteString.Char8モジュール、ASCII文字の数字をInt型に変換、unpack関数、read関数
HaskellのI/O ファイルの操作 正格なIO、Text型、readFile関数、writeFile関数、コマンドライン引数、System.Environmentモジュール、getArgs関数、大文字で書き換える、toUpper関数
HaskellのI/O ファイルの操作 正格なIO、Text型、readFile関数、writeFile関数、コマンドライン引数、System.Environmentモジュール、getArgs関数、簡易なcpプログラムの実装
HaskellのI/O ファイルの操作 ファイルを開いて閉じる System.IOモジュール、openFile関数、ReadMode、hClose関数、hGetLine関数、EOF(End Of File)、hIsEOF関数、真偽値
HaskellのI/O テキストとUnicodeの操作 遅延I/Oのプログラム、Data.Text.Lazyモジュール、Data.Text.Lazy.IOモジュール、unpack関数、lines関数、getContents関数
HaskellのI/O テキストとUnicodeの操作 String型をText型に書き換える、言語拡張、OverloadedStrings、入出力、Data.Textモジュール、Data.Text.IOモジュール、getLine関数、putStrLn関数
HaskellのI/O テキストとUnicodeの操作 Data.Textを活用する 言語拡張、OverloadedStrings、基本的なテキストユーティリティ、splitOn関数とintercalate関数によるlines関数とunlines関数の独自実装
HaskellのI/O 複数行のユーザー入力の読み込み、getContents関数、遅延評価
HaskellのI/O 式の読み込み、計算、加算と乗算、getLine関数、Data.List.Splitモジュール、splitOn関数
クラスとインターフェース デザインパターン、ファクトリーパターン、実装、拡張、オーバーロードされた関数の型
関数 型安全なアサーション関数の実装、概略の記述、可変長引数、ジェネリック
関数 宣言付きポリモーフィズムを使って、可変長引数をモデル化する、型、ジェネリック
関数 オーバーロードされた関数の型、シグネチャ、実装
関数 型安全、JavaScriptのargumentsオブジェクトの代替、可変長引数関数、レストパラメーター
型によるプログラミング Maybe型 リスト、filter関数
型によるプログラミング パラメータ化された型 mapと同様の関数の実装
型によるプログラミング 合成によるデザイン SemigroupとMonoid 単位元による合成、mempty関数、mappend関数、mconcat関数
型によるプログラミング 合成によるデザイン SemigroupとMonoid 合成可能性 関数を組み合わせる リスト、畳み込み
型の紹介 型クラスを使用する Enumクラス、OrdとEqの 手動での定義、fromEnum関数
非同期処理 オブザーバブル コンビネーター関数、組合せ
非同期処理 非同期関数 asyncキーワード、awaitキーワード、複数のPromise、allの変換
型の紹介 型クラス 必要な関数、インスタンス、Enum、Bounded、Eq、maxBound、minBound、succ
クラス コンストラクタ関数とプロトタイプをクラスに変換、定義、宣言、インスタンス化、メソッド、インスタンスプロパティ
型の紹介 型の基礎 型シグネチャ、filter関数とmap関数、リスト、空のリストでエラーにならないtail関数の作成、foldl関数
イテラブル Map ヘルパー関数、キーに基づいてソート、アタイに基づいてソート、キーと値を逆にする
型の紹介 型の基礎 関数、型シグネチャ、文字列への変換と文字列からの変換を行う関数、複数の引数を持つ関数
イテラブル Set ヘルパー関数、和集合(union)、共通部分(intersection)、差集合(subtract)、対称差(difference)
イテラブル ジェネレーター、無限、take関数
関数型プログラミングの基礎 高階関数 filter関数とlength関数によるelem関数の定義、回文、map関数、大文字と小文字の変換、スペース削除、調和級数、遅延評価
関数型プログラミングの基礎 高階関数 リストのフィルタリング、要素の削除、リストの畳み込み、総乗
関数型プログラミングの基礎 再帰関数の記述 フィボナッチ数の計算、計算量、効率化
関数型プログラミングの基礎 再帰関数の記述 リスト、要素、逆順、独自のreverse関数の実装
関数 ジェネレータ関数 無限リスト、nextメソッド
関数型プログラミングの基礎 再帰関数の記述 リストでの再帰 lengthを実装、パターンマッチング
関数 アロー関数 高階関数、引数
関数型プログラミングの基礎 再帰のルールとパターンマッチング リスト、引数、headとtail、最大公約数
関数 パラメータの分割 オブジェクトパラメータ、エイリアスパラメータの作成
関数型プログラミングの基礎 リスト repeat関数を独自に実装、cycle関数、サブシーケンス、take関数、drop関数、要素の前半部分、length関数、elem関数
関数 デフォルトパラメータとレストパラメータ
関数型プログラミングの基礎 クロージャと部分的用 二項関数、引数、待機
オブジェクトと配列 シンボル - 新しいプリミティブ well-knownシンボル、toPrimitiveプロパティ、URIクエリ文字列、シリアライズ、encodeURIComponent関数
関数型プログラミングの基礎 クロージャと部分的用 if文、偶数、even関数
関数型プログラミングの基礎 クロージャと部分的用 すべてを1つにまとめる 引数、順番、flip関数、中置演算子、前置演算子
関数型プログラミングの基礎 クロージャと部分的用 APIで使用するURLの生成 単純化
関数型プログラミングの基礎 クロージャと部分的用 関数を使って関数を作成する
関数型プログラミングの基礎 ファーストクラス関数 引数、戻り値、ディスパッチ、case式
関数型プログラミングの基礎 ファーストクラス関数 compare、GT、LT、EQ、sortBy関数
関数型プログラミングの基礎 ファーストクラス関数 引数としての関数 引数としてのラムダ式、カスタムソート、タプルのリスト、組み込み関数、Data、Listモジュール、sortBy関数
関数型プログラミングの基礎 ラムダ関数とレキシカルスコープ 入れ子
関数型プログラミングの基礎 ラムダ関数とレキシカルスコープ ラムダからletへ カスタム変数を変更可能にする ラムダ式のみによる記述
関数型プログラミングの基礎 ラムダ関数とレキシカルスコープ ラムダ関数 独自のwhere句の記述 無名関数、匿名関数
関数型プログラミングの基礎 関数と関数型プログラミング 関数型プログラミングの実用的価値 if文、then句、else句
関数型プログラミングの基礎 関数と関数型プログラミング 関数型プログラミングの実用的価値 変数 where句
ネットワークと各種グラフ問題 最短経路問題とその解法 最短経路問題 目的関数、制約条件
木と探索 2分木、頂点の総数、高さの最小値、対数関数、ガウスの記号、整数部分
木と探索 全域木と最小全域木 クラスカル法 重みを与える関数、辺、頂点、閉路、コスト、アルゴリズム
木と探索 全域木と最小全域木 クラスカル法 重みを与える関数、辺、頂点、閉路、コスト
ネットワークを学ぶ fetch関数、REST API、JSON、部分的な更新、メソッド、PATCH
for/inループ、シーケンス、インデックス、rangeではなくenumerateを使う、2つのリスト、zip関数、Matplotlibによる描画、日本語、フォント
全体像 はじめに:計算できるもの、できないものとは 扱いにくい理由、暗号化、解読、鍵、長さ、ビット数、遺伝子、多重配列アラインメント問題、組合せ、指数関数
関数の基礎 全単射の合成写像
関数の基礎 逆関数が存在するための必要十分条件、全単射
関数の基礎 全単射、総数、後者関数、射影関数、合成関数
関数の基礎 単射、和の像と像の和、包含関係
関数の基礎 2項関係、関数の定義
コレクションを学ぶ 配列、メソッド(map、reduce)、高階関数、Mapの生成、メソッド(get、set)、ジェネレーター関数、yieldキーワード、フィボナッチ数列
関数の基礎 合成関数と単射
関数の基礎 再帰関数 自然数、総和、アッカーマン関数(Ackermann Function)
関数の基礎 関数の合成 定義域と終域、値域、包含関係、単射の合成関数
関数の基礎 関数の分類 外延的記法、全射、単射、全単射
関数の基礎 関数 床関数、天井関数、剰余関数、値域 外延的記法、共通部分の値域と値域の共通部分、包含関係、グラフ
関数の基礎 関数 写像と関数 写像の図表現
数え上げの基礎 床面積、商品、立方体、高さ、床関数(ガウスの記号)
数え上げの基礎 鳩の巣原理、床関数(ガウスの記号)
処理を学ぶ 分岐、switch文、反復、for文、高階関数
数え上げの基礎 母関数 硬貨の組合せと合計金額、内訳
数え上げの基礎 母関数 硬貨の組合せ方の総数
計算量とオーダー記法 ランダウの記法、対数関数、積分、区分求積法、級数、不等式
計算量とオーダー記法 ランダウの記法、素数判定、平方根、二分探索、指数関数、対数関数、年齢当てゲーム
計算量とオーダー記法 ランダウの記法、線形、累乗、指数関数、forループ、3重、組み合わせ
関数(とその他の数学とコンピュータに関する予備知識) 入門 関数の合成、定義域と終域、確率、確率分布、剰余
関数(とその他の数学とコンピュータに関する予備知識) 入門 逆関数、可逆、逆写像、全単射、恒等写像
関数(とその他の数学とコンピュータに関する予備知識) 入門 スライスのスライス、入れ子、forループ、range
関数(とその他の数学とコンピュータに関する予備知識) 入門 ミニ検索エンジン ファイルの読み込み、osパッケージ、Open関数、bufioパッケージ、Scanner、文字列処理、stringsパッケージ、Split関数
関数(とその他の数学とコンピュータに関する予備知識) 入門 モジュールと制御構造、mathモジュール、定数、関数、forループ
関数(とその他の数学とコンピュータに関する予備知識) 入門 関数の定義、引数、戻り値、型
関数(とその他の数学とコンピュータに関する予備知識) 入門 mapに存在するキーかの判定方法、辞書のスライス、n進数、底
関数(とその他の数学とコンピュータに関する予備知識) 入門 繰り返し処理について スライス、map、長さ、forとrange
複素数 実部、絶対値、不等式、オイラーの公式、三角関数、正弦と余弦、共役複素数、フーリエ級数、フーリエ係数、矩形波
関数(とその他の数学とコンピュータに関する予備知識) 入門 タプルの代わりに配列、配列のスライス
関数(とその他の数学とコンピュータに関する予備知識) 入門 リストの代わり、スライス、直積、変数と代入
関数(とその他の数学とコンピュータに関する予備知識) 入門 集合 mapで代用、共通部分、forループ、range
関数(とその他の数学とコンピュータに関する予備知識) 入門 簡単な式、計算と数値、比較、条件、ブール値、代入文、条件式
関数(とその他の数学とコンピュータに関する予備知識) 関数 可逆関数の合成関数についての可逆性 可逆ではない関数の合成関数、反例
関数(とその他の数学とコンピュータに関する予備知識) 関数 可逆関数の合成関数についての可逆性
知識を広げる プログラムの作成 変数、関数、リスト、局所変数、Clear、規則、制御構造、条件分岐、IF、Which
知識を広げる 微積分 導関数、プライム記号、2次導関数、極限、無限大、Traditional Form、不定積分、定積分、数値近似、二重積分
Mathematicaの基本1 Wolfram言語の基本 変数、リスト、関数、複合式、出力、非表示、単位、変換
Mathematicaの基本1 入力と出力 自由形式入力、Wolfram言語の取得、素数、大小、累乗、三角関数、正弦と余弦、3次元の描画