# [Charcoal], 56 bytes WS⊞υιP⪫υ¶W⊕⌕⪪HIO>^<v¹KK¿‹ι⁴¿⁼⊖ι﹪φ²⎚M✳⊗φ«≔ιφ✳⊗φψ»≔KKθ⎚⁼θψ [Try it online!][TIO-l2a8x6sh] Link is to verbose version of code. Takes input as a list of newline-terminated strings and outputs `-` if the program does not halt, nothing if it halts. Explanation: WS⊞υιP⪫υ¶ Input the instructions and print them to the canvas without moving the cursor. W⊕⌕⪪HIO>^<v¹KK While the character under the cursor is a valid instruction: ¿‹ι⁴ If this was an intersection-type character, then... ¿⁼⊖ι﹪φ²⎚ ... if this intersection should halt the program than clear the canvas, causing the loop to exit, ... M✳⊗φ ... otherwise move on through the intersection. «≔ιφ✳⊗φψ» Otherwise, update the direction, replace the current character with a null marker and move in the new direction. ≔KKθ⎚⁼θψ Output whether the cursor landed on a null marker, indicating an infinite loop. [Charcoal]: https://github.com/somebody1234/Charcoal [TIO-l2a8x6sh]: https://tio.run/##bY9BS8QwEIXPm18ReppAPKx4aymIddmKyxb2Kgu1nW4HY9I2SUXE317T3aqXhVzy3nxv3lRtOVSmVNP00ZJCDrnuvDu4gfQJhOCFty14yUnEbOeVoy44Dp4M6VmOXnQkgvUHVwO@o3ZYw4Z0DYdOkYNom@/TYzJGkq@F5AXiW8gO6dRweEZrgSS/W/6PvS@VhQz/oyhAO1N7ZaCR/HYmHxSWA4iYo7IYzBEhowErR0ZDZvyrClwj5m7niS@2ureWTnpe1QR1VZwPuQpJ/hkmvtlCXPpK3gfxdy@74EvZfiZEPE1pno5sTPYJ26ZHFt50M6of "Charcoal – Try It Online"