The crunch of finals has been upon us for the past week as we wrap up the semester, my last semester at Tufts. I couldn’t help but notice all the expressions of pain due to the stress of finals from my friends - pain that made me want to make a lame joke about French bread: 🥖. No actual joke, just an expression that I know the word for bread in French and how I couldn’t wait for this all to be over.
Staring at the emoji though, I realized that it looked like a forward slash. So me and my weird, sleep-deprived brain wondered if it’d be possible to use it instead of
/ for building paths in in Python, like this:
from pathlib import Path r = Path('🥖') home_dir = r 🥖 "home" 🥖 "user" bin_dir = r 🥖 "usr" 🥖 "bin"
How cool would that be?! And after a bit of research and testing, it turns out it’s completely possible! Using
pythonji and some infix operators, here’s the little script I wrote:
$ cat pain.🐍 #!/usr/bin/env pythonji from pathlib import Path as 📉 class 🔨: def __init__(self, function): self.function = function def __add__(self, other): return self.function(other) def __radd__(self, other): return type(self)(lambda x, self=self, other=other: self.function(other, x)) def __call__(self, value1, value2): return self.function(value1, value2) 🥖 = 🔨(lambda x, y: x / y) r = 📉('/') l = r +🥖+ "home" +🥖+ "margret" +🥖+ "dev" +🥖+ "linux" print(l.parent) $ ./pain.🐍 /home/margret/dev
Of course while it’s not exactly just the French bread emoji (being surrounded with
+), it’s definitely a lot closer than I thought I would get originally. And while infix operators may technically be a “hack” on Python, I love their flexibility to do weird stuff like this. Off to finish the rest of my finals!
I created the cover photo using Carbon, for those interested.