# Bean Machine Retrospective, part 7

DevFeed: [Bean Machine Retrospective, part 7](<https://devfeed.tech/articles/bean-machine-retrospective-part-7-38665.md>)

Original publisher: [Read original article](<https://ericlippert.com/2023/02/08/bean-machine-retrospective-part-7/>)

Author: ericlippert

Published: 2023-02-08T18:19:08Z

Content type: tutorial

Language: en

Sources: [Eric Lippert](<https://devfeed.tech/sources/eric-lippert.md>)

Topics: [Programming](<https://devfeed.tech/topics/programming.md>), [Compiler](<https://devfeed.tech/topics/compiler.md>), [Parser](<https://devfeed.tech/topics/parser.md>), [Python](<https://devfeed.tech/topics/python.md>), [Functional programming](<https://devfeed.tech/topics/functional-programming.md>)

Tags: [ast](<https://devfeed.tech/tags/ast.md>), [compiler](<https://devfeed.tech/tags/compiler.md>), [function](<https://devfeed.tech/tags/function.md>), [functional-programming](<https://devfeed.tech/tags/functional-programming.md>), [programming](<https://devfeed.tech/tags/programming.md>), [programming-language](<https://devfeed.tech/tags/programming-language.md>), [syntax](<https://devfeed.tech/tags/syntax.md>), [uncategorized](<https://devfeed.tech/tags/uncategorized.md>)

## AI overview

This installment explains how function composition and ideas from combinatory logic and functional programming can model control flow as combinators for constructing compiler workflows. It introduces abstract syntax trees and uses Python's ast module in the context of Bean Machine's compiler.

## Source excerpt

How do we write a compiler in a typical general-purpose line-of-business OO programming language such as Python, C#, Java, and so on? Compilers are programs, so we could make the question more general: how do we write programs? The basic ... Continue reading ->