アットウィキロゴ
大久保弘崇
掲示板 掲示板 ページ検索 ページ検索 メニュー メニュー

大久保弘崇

ex10.4

最終更新:

hirotakaohkubo

- view
管理者のみ編集可

10.11

instance ArrowLoop StreamMap where
  loop (SM f) = SM (trace (unzipStream . f . zipStream))
 

10.12

loop (first f)
= loop (first f >>> idA) {恒等性}
= f >>> loop idA {左結合}
= f >>> loop (pure id) {定義}
= f >>> pure (trace id) {拡張}
= f >>> pure id
= f {定義と恒等性}
※部
trace id
=λb → let (c,d) = id (b, d) in c {定義}
=λb → b
= id

10.13

考え中。

10.14

pはパターン、aは複雑な式、fはアロー式。
いずれの形も使えるということから、
  • FV(p) と FV(f) は disjoint
  • このアローはArrowApplyのインスタンス
である。

1つめを使う場合。
proc p → f -< a = pure (λp→a) >>> f

2つめを使う場合。
aはpに依存するが、fは依存していないことから、
λp→(f,a) = (λc→(f,c)) . (λp→a)
がいえる。
proc p → f -< a
= pure (λp → (f,a)) >>> app {定義2}
= pure (λc→(f,c) . λp→a) >>> app {上}
= pure (λp→a) >>> pure (λc→(f,c)) >>> app {関手合成}
= pure (λp→a) >>> mkPair f >>> app {定義}
= pure (λp→>a) >>> f {外延性}

10.15

http://www.soi.city.ac.uk/~ross/papers/notation.html にcaseの話も込みで全部書いてある。
proc p → if e then c1 else c2 = arr (λ p → if e then Left p else Right p) >>> (proc p → c1) ||| (proc p → c2)
しかし、変換を完全にするには、
proc p → { if e then c1 else c2 ; B }
を対象にするか、またはこれが
proc p → if e then proc p → { c1 ; B } else proc p → { c2 ; B }
に変換できることを示せないと不充分ではないか。

コメント

名前:
コメント:
記事メニュー
最近更新されたスレッド
人気記事ランキング
ウィキ募集バナー