---
title: "James Sinclair (@jrsinclair) | Hashnode"
description: "Web Developer. Read the latest articles by James Sinclair on Hashnode."
url: "https://hashnode.com/@jrsinclair"
---

@jrsinclair

# James Sinclair

@jrsinclair · Australia · Joined May 2016

Web Developer

[Website](https://jrsinclair.com/)

### [Algebraic Structures: Things I wish someone had explained about functional programming](https://jrsinclair.hashnode.dev/algebraic-structures-things-i-wish-someone-had-explained-about-functional-programming?utm_source=hashnode&utm_medium=feed)

This is part 2 of a four-part series: Things I wish someone had explained to me about functional programming Part 1: Faulty Assumptions Part 2: Algebraic Structures Part 3: Type classes Part 4: Algebraic Data Types Algebraic Structures are somethin...

[jrsinclair.hashnode.dev](https://jrsinclair.hashnode.dev/algebraic-structures-things-i-wish-someone-had-explained-about-functional-programming?utm_source=hashnode&utm_medium=feed)

[Nov 4, 2019](https://hashnode.com/posts/algebraic-structures-things-i-wish-someone-had-explained-about-functional-programming/5dc019b30577b89468910045)

### [What are higher-order functions, and why should anyone care?](https://jrsinclair.hashnode.dev/what-are-higher-order-functions-and-why-should-anyone-care?utm_source=hashnode&utm_medium=feed)

Originally published 2 July 2019 at: https://jrsinclair.com/articles/2019/what-is-a-higher-order-function-and-why-should-anyone-care/ “Higher-order function” is one of those phrases people throw around a lot. But it's rare for anyone to stop to expla...

[jrsinclair.hashnode.dev](https://jrsinclair.hashnode.dev/what-are-higher-order-functions-and-why-should-anyone-care?utm_source=hashnode&utm_medium=feed)

[Jul 2, 2019](https://hashnode.com/posts/what-are-higher-order-functions-and-why-should-anyone-care/5d1ab71c28c857e515adf8d9)

### [Functional JavaScript: Traversing Trees with a Recursive Reduce](https://jrsinclair.hashnode.dev/functional-javascript-traversing-trees-with-a-recursive-reduce?utm_source=hashnode&utm_medium=feed)

Trees come up a lot in web development. More than you would expect, anyway. For most of my web development career, I haven’t needed many complicated data structures. And tricky algorithms don't come up that often either. Things like linked lists and ...

[jrsinclair.hashnode.dev](https://jrsinclair.hashnode.dev/functional-javascript-traversing-trees-with-a-recursive-reduce?utm_source=hashnode&utm_medium=feed)

[1](https://hashnode.com/posts/functional-javascript-traversing-trees-with-a-recursive-reduce/5d00f8e2c7974d966e862f5c) [Jun 12, 2019](https://hashnode.com/posts/functional-javascript-traversing-trees-with-a-recursive-reduce/5d00f8e2c7974d966e862f5c)

### [Magical, Mystical JavaScript Transducers](https://jrsinclair.hashnode.dev/magical-mystical-javascript-transducers?utm_source=hashnode&utm_medium=feed)

First published as Magical, Mystical JavaScript Transducers at jrsinclair.com In an earlier post we were looking at how to calculate an average using JavaScript's array method. And in that article we ran into a dilemma. On the one hand, we could buil...

[jrsinclair.hashnode.dev](https://jrsinclair.hashnode.dev/magical-mystical-javascript-transducers?utm_source=hashnode&utm_medium=feed)

[Jun 6, 2019](https://hashnode.com/posts/magical-mystical-javascript-transducers/5cf8b78c149e0e9103e8661f)
