実行のトレースを出力することを考える。出力は出力を生成する計算を表現する型を導入する。値は出力を生成したペアと計算結果の値で構成される。評価器をこの型に適合させるのは簡単だが、退屈である。outputは計算のトレースを表し、出力は以下のようになる。各バリエーションで、計算の種類を見た。それぞれMは、例外を発生させ、状態に作用し、出力を生成する計算を表した。M<Int>の型になった。M<B>の関数の型に替わった。これは、型Aを引数に取り、型Bの結果とMによって得られた付加効果を返す関数と解釈できる。これらのオペレーションはセクション3で説明されている3つの法則を満たさなければならない。}}この評価器は最初のものよりは複雑だが、柔軟である。定義と局所的な変更をするだけで良い。評価器全体を書き換える必要がない。単純なモナドでは、計算は値と何ら変わりはない。例外モナドでは、計算は例外を発生させるか、値を返す。mが例外の場合、再度例外を発生させ、その他の場合、関数kを戻された値に適応する。最後に関数raiseは例外を発生させる。以下のように変更すれば良い。状態モナドでは、計算は初期状態を取り、値とペアになる最終状態を返す。初期状態xと値aと最終状態xをとる計算を返す。unit(a)はaをとり状態を変更させない。初期状態xの計算mを実行し、値aと中間状態yを引き起こし、状態yの計算k(a)を実行し、値bと最終状態zを返す。状態を増加させ、空の値()を返す。以下に変更すれば良い。出力モナドでは、計算は生成された出力とペアになる値を返す。出力なしとペアになるaを返す。出力xと計算mの値aを抽出し、出力yと計算k(a)の値bを抽出し、xとyの結合からなる出力とペアになる値bを返す。出力xと空の値()の計算を返す。実行のトレースをmonadic評価器に適応すると以下のようになる。使用して、マイクからの入力を録音する。簡単のため、マイクアクセスの許可、オーディオセッションの管理などのハンドリングは考慮していない。持ち、この入力ノードはマイク(入力ハードウェア)からオーディオデータを受け取る。inputNodeの出力を別のノードに接続するか、タップをインストールすれば、inputNodeから入力を受け取ることができる。使用してノードからの出力を監視し、バッファを逐次保存する。}}エフェクトをかけて録音ディレイ効果をかけて、エフェクトがかかった音を録音する。インストールしたオーディオタップを削除できる。引数にフォーマットを指定するとき、間違ったフォーマットを指定しまっていると訳の分からない例外が投げられたりする。すると、以下のようなエラーがでて、クラッシュする。ライブラリを使用して、FFTにより振幅スペクトルを求める(ここでは簡単のために窓関数を用いずにFFTを実行する)。サイン波は次式のように表せられる。(0<=n<N)ここで、Ampは振幅、f0は基本周波数、fsは標本化周波数、nは標本化数。FFTを実行する音データとして、以下の値をとるサイン波を考える。64このとき、サイン波は次のようになる。2.2準備Accelerateフレームワークをインポート。16.0)}サンプルデータをDSPSplitComplex型に変換するまず、vDSPで実FFTを実行する前に、vDSP_ctoz関数を使用してDSPSplitComplex型にパック(変換)する必要がある。関数を使用することによって生成する。log2(number_of_samples))以上を指定する。基数オプションを指定する。基数オプションには、ビット演算ORでFFT_RADIX2、FFT_RADIX3、FFT_RADIX5の任意の組み合わせが使用できる。関数を使用してFFTを実行する。1/2倍する必要がある。関数を使用して各配列要素の値を1/2倍する。音データの場合は無視できるので、インデックスは1から出力する。setupを解放vDSP_destroy_fftsetup(setup)出力結果は以下のようになる。記載されている値が出力されていることがわかる。使用して、440Hzのサイン波(ラ音)をPCMバッファーに設定し、鳴らす。周波数fのサイン波は以下の式で与えられる。Hzのサイン波は以下のようになる。非インターリーブドのオーディオフォーマット(audioFormat)に対し、PCMバッファーを以下のように生成する。UInt32(44100)上記のバッファー変数(buffer)に対して、サイン波の値を設定する。}}このバッファーをAVAudioPlayerNode.scheduleBuffer()でスケジュールし、再生すればサイン波が鳴る。インスタンス変数として宣言する。AVAudioPlayerNode()playSineWave関数でオーディオエンジン・バッファーを設定し、サイン波を再生する。