Upgrade to Pro — share decks privately, control downloads, hide ads and more …

SchemeのEphemeronとWeak Pairの説明

SchemeのEphemeronとWeak Pairの説明

Niyarin

June 25, 2020
Tweet

More Decks by Niyarin

Other Decks in Programming

Transcript

  1. Ephemeronの概要 About Ephemeron ・ R7RS large red/(SRFI 124) ・Weak-pairsの亜種 ・オリジナルはSmalltalkに搭載された機能

    Smalltalk/vの作者の1人(George Bosworth)の発明 ・ポータブルに実装できない
  2. Ephemeron処理系ごとの実装 ・自前のトレース系GCを持つ処理系は割とやるだけ "Ephemerons: A New Finalization Mechanism"に疑似コードがある ・Boehm GCは難しい 弱参照:GC_GENERAL_REGISTER_DISAPPEARING_LINK

    ファイナライズ:GC_REGISTER_FINALIZER で、”keyが回収可能ならbrokenする”までは実装できる valからのみはこれだけではできない
  3. EphemeronとSchemeの回収の扱い R7RSのメモリの扱い “they are permitted to reclaim the storage occupied

    by an object.” → 「再利用を許可する」 再利用は許可されているだけなので、普通のconsでも良い (define make-ephemeron cons) (define ephemeron-key car) (define ephemeron-datum cdr) (define (ephemeron-broken? _) #f)