# SICP Exercise 2.38

Code

```
#lang racket
(require "common.scm")
(fold-right / 1 (list 1 2 3))
(fold-left / 1 (list 1 2 3))
(fold-right list '() (list 1 2 3))
(fold-left list '() (list 1 2 3))
```

Output

```
3/2
1/6
'(1 (2 (3 ())))
'(((() 1) 2) 3)
```

`fold-left`

and `fold-right`

will produce the same values for any sequence when
operation `op`

is associative, i.e.

```
(op (op a b) c) == (op a (op b c))
```