FuzzyKit/Sources/FuzzyLogic/Reasoning/FuzzyProposition.swift

31 lines
789 B
Swift

import FuzzySets
public protocol FuzzyProposition {
associatedtype U
func apply(_ u: U, settings: OperationSettings) -> Grade
}
public extension FuzzyProposition {
func callAsFunction(_ u: U, settings: OperationSettings = .init()) -> Grade {
apply(u, settings: settings)
}
}
extension AnyFuzzySet: FuzzyProposition {
public func apply(_ u: Universe, settings: OperationSettings) -> Grade {
grade(forElement: u)
}
}
extension IterableFuzzySet: FuzzyProposition {
public func apply(_ u: Universe, settings: OperationSettings) -> Grade {
grade(forElement: u)
}
}
extension DiscreteMutableFuzzySet: FuzzyProposition {
public func apply(_ u: Universe, settings: OperationSettings) -> Grade {
grade(forElement: u)
}
}