Brainfuck is an esoteric programming language that is Turing Complete, meaning you can't tell whether a given program will halt without running it. It's cell-based and has an infinite tape of cells, values containing an unsigned integer from 0 to 255, but if you give it arbitrary-size cells, just three is enough to make it Turing Complete.
But one cell isn't in either case.
The bit of brainfuck that we'll be using contains these four operations:
+
: Increment the current cell-
: Decrement the current cell[
: Loop while the current cell is nonzero]
: End a loop
You should use a single unsigned integer from 0 to 255 as the cell, wrapping round when you decrement zero or increment 255.
You may return any two distinct, consistent values to say whether it halts or not. The program will be a valid brainfuck program (balanced brackets) and only contain these four characters. You may not output by halting/not halting.
Testcases
If you want to look at these in more depth, here's a good visualizer.
Falsy (doesn't halt)
+[]
+[++]
+[++[+]--]
+[----]
+[-]-[+[-]-]
+[[-]-[+[-]-+[++]-[+]]-[++][-]]
++[-]+[--]-
Truthy (halts)
[+]
+
+[+]
++[+++]
+++--[++-][+][+]
+[+]-[+++]-
Standard code-golf rules apply.
+[---]
halt? \$\endgroup\$[+[++]]
. I can see that tripping up a potential approach. \$\endgroup\$