Fuzzy
Probabilistic values and fuzzy logic operations
Import
_ <- fat.extra.Fuzzy
Constructor
Name | Signature | Brief |
---|---|---|
Fuzzy | (val: Number = 0.5) | Create a Fuzzy probability value |
the range from 0 to 1 is ideal for values, however, higher values can still be meaningful in specific operations like conjunction with values within the standard range
Prototype members
Name | Signature | Brief |
---|---|---|
isEmpty | (): Boolean | Checks if probability is zero |
nonEmpty | (): Boolean | Checks if probability is greater than zero |
size | (): Number | Converts fuzzy value to a percentage scale |
toText | (): Text | Converts fuzzy value to a textual percentage |
and | (other: Fuzzy): Fuzzy | Logical AND operation with another fuzzy value |
or | (other: Fuzzy): Fuzzy | Logical OR operation with another fuzzy value |
not | (): Fuzzy | Logical NOT operation, inverting the chance |
decide | (): Boolean | Decides a boolean outcome within its chance |
Usage
_ <- fat.extra.Fuzzy
# Creating fuzzy instances
lowChance = Fuzzy(0.25) # 25% chance
highChance = Fuzzy(0.75) # 75% chance
# Applying logical operations
combinedChance = lowChance.and(highChance)
resolvedChance = combinedChance.decide # results in a boolean
Inspiration
Introducing the Fuzzy
type into FatScript
was inspired by the humorous meme language definition, DreamBerd, which offers booleans that can be true
, false
, or maybe
. Here, the maybe
keyword translates to Fuzzy().decide
, which can be considered an uncommon construct for most programming languages and is analogous to flipping a coin.
Although FatScript
is not as esoteric to the extent of storing booleans as "one-and-a-half bits", the concept of providing a "funny" type that allows for modeling uncertainty was an interesting experiment and might actually prove useful in many scenarios. It enhances the language's capabilities to handle operations involving chances and decision-making processes where outcomes are not deterministic. The Fuzzy
type is useful for scenarios requiring a nuanced approach to boolean logic, commonly seen in gaming logic, and anywhere probabilistic decisions are needed.