Zulip Chat Archive

Stream: general

Topic: reading "seasing pointer-based optimizations"


Asei Inoue (Feb 17 2025 at 11:04):

I am about to read a paper titled "Sealing Pointer-Based Optimizations Behind Pure Functions." However, I cannot understand the following introductory passage that I will quote next:

Functional programming languages are particularly well-suited for building automated reasoning
systems for several reasons. First, a logical term is naturally represented by an inductive type,
whereas such terms are notoriously awkward to encode in object-oriented languages. Second,
traversing a term can be implemented generically as a higher-order combinator, and so much boilerplate control-flow code can be avoided. Third, backtracking search is dramatically simplified by
the use of persistent datastructures, since branches can be paused and resumed at will.

I believe I understand the part starting with "First." However, I do not understand the parts beginning with "Second" and "Third." Since no references are provided, I assume these are commonly known facts.

What is this passage trying to say? What should I read to better understand it?

Ruben Van de Velde (Feb 17 2025 at 11:15):

I guess read "higher-order combinator" as "function that takes a function argument", so you can have a "traverse" function that takes a callback function that is called for every node of a graph rather than implementing the graph walk imperatively

Ruben Van de Velde (Feb 17 2025 at 11:15):

Not sure if that helps :)

Asei Inoue (Feb 17 2025 at 11:16):

any reference recommendation?

Chris Wong (Feb 17 2025 at 13:15):

https://en.wikibooks.org/wiki/Haskell/Traversable


Last updated: May 02 2025 at 03:31 UTC