Upgrade to PRO for Only $50/Year—Limited-Time Offer! 🔥

SchemeのEphemeronとWeak Pairの説明

Avatar for Niyarin Niyarin
June 25, 2020

SchemeのEphemeronとWeak Pairの説明

Avatar for Niyarin

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)