Piszę kompilator do maszyny stosowej w Haskellu.
Nie mam dobrego pomysłu jak nadawać nazwy etykietkom skoku tak aby się nie powtarzały.

Aktualnie pamiętam w liście kolejne "zakręty", czyli w konstrukcji "if a then b else c" etykiety a, b i c to:
(niech etykieta a = xs, gdzie xs jest listą)
-wtedy etykietą b będzie 1:xs
-natomiast etykietą c 0:xs
W ten sposób powstają listy 0,1 które mogę zamienić tylko na parzyste liczby w systemie 10.
Otrzymuje wtedy dwie jednoznaczne etykiety - przekonwertowana liczba i ta sama liczba - 1.
Dzięki temu każde miejsce skoku ma indywidualną nazwę, ale jeśli będzie więcej niż 14 zagnieżdżonych if-ów program się wysypie.
Innym problemem jest to, że dla* if a and b then c else* w a and b potrzebuję więcej etykiet niż 2.

Czy da się to lepiej zrobić?

Edit 1:
Zaryzykuję z System.Random