码迷,mamicode.com
首页 > 其他好文 > 详细

scheme set-car! 模拟

时间:2014-10-05 17:27:48      阅读:189      评论:0      收藏:0      [点我收藏+]

标签:scheme


#lang scheme

( define li ‘( 1 2 3 4 ) )

( define-syntax set-car!
   ( syntax-rules ()
      ( ( set-car! li elem )
        ( set! li ( cons elem ( cdr li ) ) ) ) ) )

( set-car! li ‘( a b ) )



或者


#lang scheme

( define ( s-cons x y )
   
   ( define ( set-x! v )
      ( set! x v ) )
   
   ( define ( set-y! v )
      ( set! y v ) )
   
   ( define ( dispatch m )
      ( cond [ ( eq? m ‘car ) x ]
             [ ( eq? m ‘cdr ) y ]
             [ ( eq? m ‘set-car! ) set-x! ]
             [ ( eq? m ‘set-cdr! ) set-y! ]
             [ else ( error "Undefined operation" m ) ] ) )
   
   dispatch )

( define ( s-car z )
   ( z ‘car ) )

( define ( s-cdr z )
   ( z ‘cdr ) )

( define ( s-set-car! z val )
   ( ( z ‘set-car! ) val )
   z )

( define ( s-set-cdr! z val )
   ( ( z ‘set-cdr! ) val ) 
   z )

( define z ( s-cons 1 2 ) )
( s-car ( s-set-car! z 111 ) )

scheme set-car! 模拟

标签:scheme

原文地址:http://blog.csdn.net/pandora_madara/article/details/39802963

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!