読者です 読者をやめる 読者になる 読者になる

yy_taroのとりとめのない落書き

メインフレームの導入・設計・構築ができるぐらいの知識があったりする。

SICP始めました 19

SICP十九日目

 

2.2階層データ構造と閉包性の問題は、以前読んだScheme手習いで似たような内容があったので、それほど苦戦しなかった。

このくらいの難易度の問題でたまにちょっと難しいぐらいのペースだったらもうちょっと読むスピードも上がるのにと思った今日この頃でした。

 

問題2.17

( define ( last-pair x )
 ( if ( null? ( cdr x ) )
  ( car x )
  ( last-pair ( cdr x ) ) ) )

 

問題2.18

( define ( reverse x )
 ( if ( null? x )
  ‘( )
  ( append ( reverse ( cdr x ) ) ( list ( car x ) ) ) ) )

 

問題2.19

 first-denomination    → car

 except-first-denomination → cdr

 no-moer?        → null?

 

問題2.20

 それほど苦戦しなかったと書いたもののはまった問題

 ドット末尾記号を再帰的に呼び出すとリストのリストになってしまうため、ループになって少々悩んだ。

 それに気がついてからできたものは以下の通り、もう少し括弧(格好)良くできそうですが、形は良さそうなのでこのまま

( define ( same-parity x . l )
 ( define ( parity ls )
  ( cond ( ( null? ls ) ‘( ) )
     ( ( and ( odd? x ) ( odd? ( car ls ) ) ) 
      ( cons ( car ls ) ( parity ( cdr ls ) ) ) )
     ( ( and ( even? x ) ( even? ( car ls ) ) ) 
      ( cons ( car ls ) ( parity ( cdr ls ) ) ) )
     ( else ( parity ( cdr ls ) ) ) ) )
 ( cons x ( parity l ) ) ) 

 

 

計算機プログラムの構造と解釈[第2版]

計算機プログラムの構造と解釈[第2版]