Recently, I needed to extract some vertices from an OBJ file and drop them into my code. Rather than writing a OBJ file parser, I used bash to process the text. Here’s the OBJ file for a simple cube exported from Blender:

Nifty. I’ll likely extend it to extract additional data, compile to a custom binary format, and save it out to a shell script. After that I can call my make binary obj from either the command line or Xcode:

$ mbo cube.obj

Update:

Full script to create a binary OBJ file with an interleaved vertex buffer (v/n/uv).

Ran across this just now and found the comment by Pavol more interesting than curried functions. Yes Pavol! Totally. This is going to be a recurring problem for a lot of imperative programmers beginning to enter the world of functional programming through Swift. ‘Functional first’ is something I have to continually remind myself of. The original (imperative) gist went something like this:

Pavol advocates a more functional approach, without the “minutiae” of loops and temp vars:

Can we continue that train of functional thought? What if we move the separator up the chain, eliminating the function call:

That was an interim step to see if it worked. Now lets wrap it up and bring back that append function, allowing us to pass any separator:

Lastly, to make it even more compact, we can remove some syntax noise in the call to reduce: