A choicepoint is a fork-in-the-road to a Prolog program. Multiple branches of possibilities are saved at this point, with the intention of returning (or "backtracking") to a different path if the current one does not lead to success.
Too many choicepoints, and the program may run out of stack. (ie. Not have enough memory available to store all previous opportunities for different paths.) A cut can prevent this, if used properly, by erasing choicepoints that are no longer relevant or necessary.
For those of you still with me, it's about 2am and I'm tripping on psilocybin mushrooms. So you're going to have to bear with me. Right now, I could use some exclamation points. I'm in serious need of a cut, as the several preceding paragraphs are no doubt proof of.
This nice little analogy probably isn't too clear to anyone outside my head, but to me, the brain normally behaves like a Prolog program with an abundance of exclamation points. Stray thoughts are "cut" out of existence before they can either clog one's brain, or exit via the mouth and manifest themselves as an act of stupidity. In an absence of cuts, however, thoughts may grow out of control and essentially clog one's head. This absence of cuts may be achieved though the use of drugs conventionally classed as "hallucinogens", whether intentional or not.
This absence can be advantageous in moderation, as it can allow thoughts that would normally be subconsciously expelled as absurd or even primitive to blossom into new ideas. But as previously stated, a cut is useful every now and then just to "clear one's head" if the thoughts become overpowering or focusing on any one idea becomes difficult.
And I think this little essay is a good example of the absence of cuts, what they can lead to and why the cut is necessary in day-to-day life. So please, someone hand me an exclamation point.
Trip buddy 1: "What?"
Me: "I need some explanation points."
Trip buddy 2: "Are you Einstein?"
Prolog code example:
factorial(N,M) :- N < 0, !, fail.
factorial(N,M) :- X is N-1,
M is N * Y.
Originated in the fanfiction community, specifically among the AU (alternate universe) crowd.
I don't know what's been up with you lately, but Bitch!Lacey needs to be fragged.
It can be used with an '=' sign like this: 3 != 4, meaning 3 does not equal 4. This is a true expression, and so the expression would return TRUE. However, if I put: ((6-3) != (5-2)) I'm basically saying 6-3 is not equal to 5-2, or 3 does not equal 3. But 3 DOES equal 3. So this expression would return false.
NOTE: != is pronounced as "Does Not Equal"
This can also be used in dialog.
int john = 6;
int mary = 7;
if(john != mary)
printf("John does not equal Mary.\nJohn does equal %d, and Mary does equal %d.\nThere is %d between them.\n",john,mary,(john-mary));
John: "Hey, did you here that science dude say e = mc3?"
Mary: "Yeah man! e totally != mc3! (NOTE: ! at end of Mary's quote does not mean the same thing. Please refer to definition number 1 here !)"