Forma expandida de dobra na raquete

Exemplo dehttp://www.cse.unsw.edu.au/~en1000/haskell/hof.html :

(foldr / 7 (list 34 56 12 4 23))
(foldl / 7 (list 34 56 12 4 23))

Saída na raquete:

5 193/196
5 193/196

Qual seria a forma completa (expandida) de foldl e foldr nesse caso? Não é o seguinte:

> (/ (/ (/ (/ (/ 7 34) 56) 12) 4) 23)
1/300288

Edit: Eu modifiquei a pergunta acima desde a implementação da dobra no Racket vs Haskell foi explicada em outra perguntaPor que foldl é definido de uma maneira estranha no Racket?.

Editar: Se eu entender as respostas claramente, o formulário expandido pode ser mostrado com muita clareza usando o módulo "threading", onde as instruções aparecem em ordem de execução (_ indica a saída da instrução anterior):

foldl:

(require threading)
; expanded form of (foldl / 7 (list 34 56 12 4 23))
; FROM LEFT TO RIGHT: 
(~> 7
    (/ 34 _)
    (/ 56 _)
    (/ 12 _)
    (/ 4  _)
    (/ 23 _) )

foldr:

; expanded form of (foldr / 7 (list 34 56 12 4 23))
; FROM RIGHT TO LEFT: 
(~> 7
    (/ 23 _)
    (/ 4  _)
    (/ 12 _)
    (/ 56 _)
    (/ 34 _) )

A saída nos dois casos é a mesma:

5 193/196
5 193/196

Fornece respostas corretas (que são diferentes para foldl e foldr) no exemplo a seguir também:

; FROM LEFT TO RIGHT:
(foldl - 0 '(1 2 3 4))
(~> 0
    (- 1 _)  ; 1-0=1
    (- 2 _)  ; 2-1=1
    (- 3 _)  ; 3-1=2
    (- 4 _)) ; 4-2=2

; FROM RIGHT TO LEFT: 
(foldr - 0 '(1 2 3 4))
(~> 0
    (- 4 _)  ; 4-0=4
    (- 3 _)  ; 3-4=-1
    (- 2 _)  ; 2-(-1)=3
    (- 1 _)) ; 1-3=-2

Resultado:

2
2
-2
-2

Em linguagem comum, parece:

The sent function takes 2 arguments, 

the first argument is from the list, one after the other 
(left to right or right to left depending on foldl and foldr), 

the second argument is init first and 
then the output of previous calculation.

questionAnswers(2)

yourAnswerToTheQuestion