mirror of
				https://github.com/KevinMidboe/linguist.git
				synced 2025-10-29 17:50:22 +00:00 
			
		
		
		
	Added a simple Mathematica package as a test case.
This commit is contained in:
		
							
								
								
									
										150
									
								
								samples/Mathematica/Predicates.m
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										150
									
								
								samples/Mathematica/Predicates.m
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,150 @@ | |||||||
|  | (* ::Package:: *) | ||||||
|  |  | ||||||
|  | BeginPackage["Predicates`"]; | ||||||
|  |  | ||||||
|  |  | ||||||
|  | (* ::Title:: *) | ||||||
|  | (*Predicates*) | ||||||
|  |  | ||||||
|  |  | ||||||
|  | (* ::Section::Closed:: *) | ||||||
|  | (*Fuzzy Logic*) | ||||||
|  |  | ||||||
|  |  | ||||||
|  | (* ::Subsection:: *) | ||||||
|  | (*Documentation*) | ||||||
|  |  | ||||||
|  |  | ||||||
|  | PossiblyTrueQ::usage="Returns True if the argument is not definitely False."; | ||||||
|  | PossiblyFalseQ::usage="Returns True if the argument is not definitely True."; | ||||||
|  | PossiblyNonzeroQ::usage="Returns True if and only if its argument is not definitely zero."; | ||||||
|  |  | ||||||
|  |  | ||||||
|  | (* ::Subsection:: *) | ||||||
|  | (*Implimentation*) | ||||||
|  |  | ||||||
|  |  | ||||||
|  | Begin["`Private`"]; | ||||||
|  |  | ||||||
|  |  | ||||||
|  | PossiblyTrueQ[expr_]:=\[Not]TrueQ[\[Not]expr] | ||||||
|  |  | ||||||
|  |  | ||||||
|  | PossiblyFalseQ[expr_]:=\[Not]TrueQ[expr] | ||||||
|  |  | ||||||
|  |  | ||||||
|  | End[]; | ||||||
|  |  | ||||||
|  |  | ||||||
|  | (* ::Section::Closed:: *) | ||||||
|  | (*Numbers and Lists*) | ||||||
|  |  | ||||||
|  |  | ||||||
|  | (* ::Subsection:: *) | ||||||
|  | (*Documentation*) | ||||||
|  |  | ||||||
|  |  | ||||||
|  | AnyQ::usage="Given a predicate and a list, retuns True if and only if that predicate is True for at least one element of the list."; | ||||||
|  | AnyElementQ::usage="Returns True if cond matches any element of L."; | ||||||
|  | AllQ::usage="Given a predicate and a list, retuns True if and only if that predicate is True for all elements of the list."; | ||||||
|  | AllElementQ::usage="Returns True if cond matches any element of L."; | ||||||
|  |  | ||||||
|  |  | ||||||
|  | AnyNonzeroQ::usage="Returns True if L is a list such that at least one element is definitely not zero."; | ||||||
|  | AnyPossiblyNonzeroQ::usage="Returns True if expr is a list such that at least one element is not definitely zero."; | ||||||
|  |  | ||||||
|  |  | ||||||
|  | RealQ::usage="Returns True if and only if the argument is a real number"; | ||||||
|  | PositiveQ::usage="Returns True if and only if the argument is a positive real number"; | ||||||
|  | NonnegativeQ::usage="Returns True if and only if the argument is a non-negative real number"; | ||||||
|  | PositiveIntegerQ::usage="Returns True if and only if the argument is a positive integer"; | ||||||
|  | NonnegativeIntegerQ::usage="Returns True if and only if the argument is a non-negative integer"; | ||||||
|  |  | ||||||
|  |  | ||||||
|  | IntegerListQ::usage="Returns True if and only if the input is a list of integers."; | ||||||
|  | PositiveIntegerListQ::usage="Returns True if and only if the input is a list of positive integers."; | ||||||
|  | NonnegativeIntegerListQ::usage="Returns True if and only if the input is a list of non-negative integers."; | ||||||
|  | IntegerOrListQ::usage="Returns True if and only if the input is a list of integers or an integer."; | ||||||
|  | PositiveIntegerOrListQ::usage="Returns True if and only if the input is a list of positive integers or a positive integer."; | ||||||
|  | NonnegativeIntegerOrListQ::usage="Returns True if and only if the input is a list of positive integers or a positive integer."; | ||||||
|  |  | ||||||
|  |  | ||||||
|  | SymbolQ::usage="Returns True if argument is an unassigned symbol."; | ||||||
|  | SymbolOrNumberQ::usage="Returns True if argument is a number of has head 'Symbol'"; | ||||||
|  |  | ||||||
|  |  | ||||||
|  | (* ::Subsection:: *) | ||||||
|  | (*Implimentation*) | ||||||
|  |  | ||||||
|  |  | ||||||
|  | Begin["`Private`"]; | ||||||
|  |  | ||||||
|  |  | ||||||
|  | AnyQ[cond_, L_] := Fold[Or, False, cond /@ L] | ||||||
|  |  | ||||||
|  |  | ||||||
|  | AnyElementQ[cond_,L_]:=AnyQ[cond,Flatten[L]] | ||||||
|  |  | ||||||
|  |  | ||||||
|  | AllQ[cond_, L_] := Fold[And, True, cond /@ L] | ||||||
|  |  | ||||||
|  |  | ||||||
|  | AllElementQ[cond_, L_] := Fold[And, True, cond /@ L] | ||||||
|  |  | ||||||
|  |  | ||||||
|  | AnyNonzeroQ[L_]:=AnyElementQ[#!=0&,L] | ||||||
|  |  | ||||||
|  |  | ||||||
|  | PossiblyNonzeroQ[expr_]:=PossiblyTrueQ[expr!=0] | ||||||
|  |  | ||||||
|  |  | ||||||
|  | AnyPossiblyNonzeroQ[expr_]:=AnyElementQ[PossiblyNonzeroQ,expr] | ||||||
|  |  | ||||||
|  |  | ||||||
|  | RealQ[n_]:=TrueQ[Im[n]==0]; | ||||||
|  |  | ||||||
|  |  | ||||||
|  | PositiveQ[n_]:=Positive[n]; | ||||||
|  |  | ||||||
|  |  | ||||||
|  | PositiveIntegerQ[n_]:=PositiveQ[n]\[And]IntegerQ[n]; | ||||||
|  |  | ||||||
|  |  | ||||||
|  | NonnegativeQ[n_]:=TrueQ[RealQ[n]&&n>=0]; | ||||||
|  |  | ||||||
|  |  | ||||||
|  | NonnegativeIntegerQ[n_]:=NonnegativeQ[n]\[And]IntegerQ[n]; | ||||||
|  |  | ||||||
|  |  | ||||||
|  | IntegerListQ[input_]:=ListQ[input]&&Not[MemberQ[IntegerQ/@input,False]]; | ||||||
|  |  | ||||||
|  |  | ||||||
|  | IntegerOrListQ[input_]:=IntegerListQ[input]||IntegerQ[input]; | ||||||
|  |  | ||||||
|  |  | ||||||
|  | PositiveIntegerListQ[input_]:=IntegerListQ[input]&&Not[MemberQ[Positive[input],False]]; | ||||||
|  |  | ||||||
|  |  | ||||||
|  | PositiveIntegerOrListQ[input_]:=PositiveIntegerListQ[input]||PositiveIntegerQ[input]; | ||||||
|  |  | ||||||
|  |  | ||||||
|  | NonnegativeIntegerListQ[input_]:=IntegerListQ[input]&&Not[MemberQ[NonnegativeIntegerQ[input],False]]; | ||||||
|  |  | ||||||
|  |  | ||||||
|  | NonnegativeIntegerOrListQ[input_]:=NonnegativeIntegerListQ[input]||NonnegativeIntegerQ[input]; | ||||||
|  |  | ||||||
|  |  | ||||||
|  | SymbolQ[a_]:=Head[a]===Symbol; | ||||||
|  |  | ||||||
|  |  | ||||||
|  | SymbolOrNumberQ[a_]:=NumericQ[a]||Head[a]===Symbol; | ||||||
|  |  | ||||||
|  |  | ||||||
|  | End[]; | ||||||
|  |  | ||||||
|  |  | ||||||
|  | (* ::Section:: *) | ||||||
|  | (*Epilogue*) | ||||||
|  |  | ||||||
|  |  | ||||||
|  | EndPackage[]; | ||||||
		Reference in New Issue
	
	Block a user