- Joined
- Jul 20, 2025
- Messages
- 81
- Thread Author
- #1
(GOTO Conferences 2023)
Background
Anjana Vakil is a developer advocate at Observable. Observable is a platform that makes web applications for data visualization. She has a background in linguistics & philosophy. She majored in philosophy and was fascinated by foreign languages. She taught english as a foreign language and discovered her interest in linguistics. She discovered computational linguistics, which uses statistics to better understand language and create better technology(TTS, voice recognition, ...). She enjoyed developing the software more than the linguistics and moved into compsci.
Connection between compsci-fields & philosophy/linguistics
However, humans are different: We try to write code in a way that its easy for someone to remember or be introduced to. This allows us to create powerful expressive systems that are made of the humans writing the code, AND the code itself. Jensen relates, saying that as he progressed through his journey he began thinking about code cleanliness.(TODO: What is clean code?[1]). Anjana says that code should be performant for both humans and computers. Jensen agrees and adds: git also tells us about social factors of the information. We can see which codes are touched often and which aren't. Being able to see that data helps us understand a codebase and how it functions.
Functional Programming
What defines a functional language?
A functional language is a language that supports functional programming. This means programming with only pure functions(Input-> Output). No side effects. Nothing else in the program is changed. Another way to think of it is 'programming without state'. Instead of thinking about values changing and going all around, think about data going in and out.
Purely functional languages ONLY allow pure functions, while multi-paradigm languages let you program functionally if you want to, and they have the features you need for it. Pure functional languages are often favored in data-centric domains because they make code easier to debug, test, and scale.
What features support a functional programming style?
For functional programming, functions must be treated like any other variable or value. This concept is called first-class functions and a programming language supports them if a function can be assigned to variables, passed as an argument, and returned from other functions. Being able to map or filter data without explicit loops. and having access to lambda functions(see: Lambda Calculus).
Benefits of Functional Programming
A stateful program depends on checking for things and test cases. This produces bugs and impredictability. Functional programs are very easy to test: you have your input and your output. The answer will never be undefined and you can isolate functions. Nothing will change because it depends on no state. This frees mind-space and makes it easier to learn: you just have functions. Obviously, it gets more complicated than that, but you only have to keep track of your functions. There are no variables to remember.
Gatekeeping In Compsci
There is a sense of gatekeeping in the computer science environment. People feel special for struggling to learn difficult concepts. They make what they learned seem impossibly difficult and put beginners down, continuing the cycle. Anjana tells us that anyone can program. You do not need to be a genius. She reminds us that we can explain concepts to others.
Personal Commentary
The World Is Impure
Human activities change over time. The world has state. We want to do things, and these are side effects. You cannot do anything in a functional language but return an output. How do we deal with real-world side effects? If life were a functional program: a pure action would be something that depends on your intention and results in predictable consequences without harming yourself or others.
Intentionality and Side-Effects
Human actions are ineherently side-effecting: speaking, creating, or even withdrawal influences the environment. Side effects must be managed instead of eliminated. Prioritize non-coercion and controlled minimal interventions.
Boundary Awareness
Functional programs isolate their internal state. I mirror this with boundaries. My withdrawal replaces reactive or ego-driven engagement.
Functional Programming as an Ethical metaphor
Pure functions are predictable non-coercive rule-governed actions. Side effects are inevitable, but can be minimized & anticipated. Structure, clarity, and intention are the measure of moral and technical virtue
GOTO Conferences, ed. 2023. Functional Programming Through the Lens of a Philosopher & Linguist • Anjana Vakil & Lars Jensen. Directed by GOTO Conferences. .
Footnotes
Footnotes
_________
[1] Clean code is code that is readable, understandable, and maintainable. It emphasizes simplicity, clarity, and minimal side effects, making it easier for humans to reason about the system. EDIT: In this context, 'clean code' is about reducing cognitive load
Background
Anjana Vakil is a developer advocate at Observable. Observable is a platform that makes web applications for data visualization. She has a background in linguistics & philosophy. She majored in philosophy and was fascinated by foreign languages. She taught english as a foreign language and discovered her interest in linguistics. She discovered computational linguistics, which uses statistics to better understand language and create better technology(TTS, voice recognition, ...). She enjoyed developing the software more than the linguistics and moved into compsci.
Connection between compsci-fields & philosophy/linguistics
The act of computing & creating complex programs is more about the people involved than the computers. Computers do not care whether a program is elegant or not. They simply follow instructions.Programming languages are more for communicating with other people, and the computers just run it.
However, humans are different: We try to write code in a way that its easy for someone to remember or be introduced to. This allows us to create powerful expressive systems that are made of the humans writing the code, AND the code itself. Jensen relates, saying that as he progressed through his journey he began thinking about code cleanliness.(TODO: What is clean code?[1]). Anjana says that code should be performant for both humans and computers. Jensen agrees and adds: git also tells us about social factors of the information. We can see which codes are touched often and which aren't. Being able to see that data helps us understand a codebase and how it functions.
Functional Programming
What defines a functional language?
A functional language is a language that supports functional programming. This means programming with only pure functions(Input-> Output). No side effects. Nothing else in the program is changed. Another way to think of it is 'programming without state'. Instead of thinking about values changing and going all around, think about data going in and out.
Purely functional languages ONLY allow pure functions, while multi-paradigm languages let you program functionally if you want to, and they have the features you need for it. Pure functional languages are often favored in data-centric domains because they make code easier to debug, test, and scale.
What features support a functional programming style?
For functional programming, functions must be treated like any other variable or value. This concept is called first-class functions and a programming language supports them if a function can be assigned to variables, passed as an argument, and returned from other functions. Being able to map or filter data without explicit loops. and having access to lambda functions(see: Lambda Calculus).
Benefits of Functional Programming
A stateful program depends on checking for things and test cases. This produces bugs and impredictability. Functional programs are very easy to test: you have your input and your output. The answer will never be undefined and you can isolate functions. Nothing will change because it depends on no state. This frees mind-space and makes it easier to learn: you just have functions. Obviously, it gets more complicated than that, but you only have to keep track of your functions. There are no variables to remember.
Gatekeeping In Compsci
There is a sense of gatekeeping in the computer science environment. People feel special for struggling to learn difficult concepts. They make what they learned seem impossibly difficult and put beginners down, continuing the cycle. Anjana tells us that anyone can program. You do not need to be a genius. She reminds us that we can explain concepts to others.
Personal Commentary
The World Is Impure
Human activities change over time. The world has state. We want to do things, and these are side effects. You cannot do anything in a functional language but return an output. How do we deal with real-world side effects? If life were a functional program: a pure action would be something that depends on your intention and results in predictable consequences without harming yourself or others.
Intentionality and Side-Effects
Human actions are ineherently side-effecting: speaking, creating, or even withdrawal influences the environment. Side effects must be managed instead of eliminated. Prioritize non-coercion and controlled minimal interventions.
Boundary Awareness
Functional programs isolate their internal state. I mirror this with boundaries. My withdrawal replaces reactive or ego-driven engagement.
Functional Programming as an Ethical metaphor
Pure functions are predictable non-coercive rule-governed actions. Side effects are inevitable, but can be minimized & anticipated. Structure, clarity, and intention are the measure of moral and technical virtue
GOTO Conferences, ed. 2023. Functional Programming Through the Lens of a Philosopher & Linguist • Anjana Vakil & Lars Jensen. Directed by GOTO Conferences. .
Footnotes
Footnotes
_________
[1] Clean code is code that is readable, understandable, and maintainable. It emphasizes simplicity, clarity, and minimal side effects, making it easier for humans to reason about the system. EDIT: In this context, 'clean code' is about reducing cognitive load
Last edited: