<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://en.formulasearchengine.com/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=117.193.46.63</id>
	<title>formulasearchengine - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://en.formulasearchengine.com/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=117.193.46.63"/>
	<link rel="alternate" type="text/html" href="https://en.formulasearchengine.com/wiki/Special:Contributions/117.193.46.63"/>
	<updated>2026-05-02T02:14:05Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.43.0-wmf.28</generator>
	<entry>
		<id>https://en.formulasearchengine.com/index.php?title=Var%C4%81hamihira&amp;diff=7738</id>
		<title>Varāhamihira</title>
		<link rel="alternate" type="text/html" href="https://en.formulasearchengine.com/index.php?title=Var%C4%81hamihira&amp;diff=7738"/>
		<updated>2014-01-28T11:32:25Z</updated>

		<summary type="html">&lt;p&gt;117.193.46.63: /* Western influences */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;In [[computer science]], the &#039;&#039;&#039;Boolean&#039;&#039;&#039; or &#039;&#039;&#039;logical data type&#039;&#039;&#039; is a [[data type]], having two values (usually denoted &#039;&#039;&#039;true&#039;&#039;&#039; and &#039;&#039;&#039;false&#039;&#039;&#039;), intended to represent the [[truth value]]s of [[logic]] and [[Boolean algebra (logic)|Boolean algebra]]. It is named after [[George Boole]], who first defined an algebraic system of logic in the mid 19th century. The Boolean data type is the primary result of [[Conditional (programming)|conditional statements]], which allow different actions and change [[control flow]] depending on whether a programmer-specified boolean &#039;&#039;condition&#039;&#039; evaluates to true or false.&lt;br /&gt;
&lt;br /&gt;
== Generalities ==&lt;br /&gt;
In [[programming language]]s that have a built-in Boolean data type, such as [[Pascal programming language|Pascal]] and [[Java programming language|Java]], the [[comparison operator]]s such as &amp;lt;code&amp;gt;&amp;gt;&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;≠&amp;lt;/code&amp;gt; are usually defined to return a Boolean value. [[if-then-else|Conditional]] and [[while loop|iterative command]]s may be defined to test Boolean-valued expressions.&lt;br /&gt;
&lt;br /&gt;
Languages without an explicit Boolean data type, like [[ANSI C#C90|C90]] and [[Lisp (programming language)|Lisp]], may still represent truth values by some other data type.  Lisp uses an empty list for false, and any other value for true.  C uses an [[integer (computer science)|integer]] type, where relational expressions like &amp;lt;code&amp;gt;i &amp;gt; j&amp;lt;/code&amp;gt; and logical expressions connected by &amp;lt;code&amp;gt;&amp;amp;&amp;amp;&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;||&amp;lt;/code&amp;gt; are defined to have value 1 if true and 0 if false, whereas the test parts of &amp;lt;code&amp;gt;if&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;while&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;for&amp;lt;/code&amp;gt;, etc., treat any non-zero value as true.&amp;lt;ref name=&amp;quot;k&amp;amp;r1e&amp;quot;&amp;gt;{{cite book  | first1 = Brian W | last1 = Kernighan | authorlink1 = Brian Kernighan | first2 = Dennis M |last2 = Ritchie | authorlink2 = Dennis Ritchie | page = 41 | title = [[The C Programming Language (book)|The C Programming Language]] | edition = 1st | publisher = [[Prentice Hall]] | year= 1978 | location = [[Englewood Cliffs, NJ]] | ISBN = 0-13-110163-3 }}&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;{{ cite book | pages=86–93 | first1 = PJ |last1 = Plauger | authorlink1 = P. J. Plauger | first2 = Jim | last2 = Brodie | title = ANSI and ISO Standard C Programmer&#039;s reference | publisher = [[Microsoft Press]] | origyear = 1989 | year = 1992 | ISBN = 1-55615-359-7}}&amp;lt;/ref&amp;gt; Indeed, a Boolean variable may be regarded (and be implemented) as a numerical variable with a single [[bit|binary digit (bit)]], which can store only two values. It is worth noting that the implementation of booleans in computers are most likely represented as a full [[Word (computer architecture)|word]], rather than a bit; this is usually due to the ways computers transfer blocks of information.&lt;br /&gt;
&lt;br /&gt;
Most programming languages, even those that do not have an explicit Boolean type, have support for Boolean algebraic operations such as [[logical conjunction|conjunction]] (&amp;lt;code&amp;gt;AND&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;amp;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;*&amp;lt;/code&amp;gt;), [[logical disjunction|disjunction]] (&amp;lt;code&amp;gt;OR&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;|&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;+&amp;lt;/code&amp;gt;), [[logical equivalence|equivalence]] (&amp;lt;code&amp;gt;EQV&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;=&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;==&amp;lt;/code&amp;gt;), [[exclusive disjunction|exclusive or/non-equivalence]] (&amp;lt;code&amp;gt;XOR&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;NEQV&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;^&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;!=&amp;lt;/code&amp;gt;), and [[negation]] (&amp;lt;code&amp;gt;NOT&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;~&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;!&amp;lt;/code&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
In some languages, like [[Ruby (programming language)|Ruby]], [[Smalltalk]], and [[Alice (software)|Alice]] the &amp;quot;true&amp;quot; and &amp;quot;false&amp;quot; values belong to separate classes—e.g. &amp;lt;code&amp;gt;True&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;False&amp;lt;/code&amp;gt;, resp.—so there is no single Boolean &amp;quot;type.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
In [[SQL]], which uses a [[three-valued logic]] for explicit comparisons because of its special treatment of [[Null (SQL)|Null]]s, the Boolean data type (introduced in [[SQL:1999]]) is also defined to include more than two truth values, so that SQL &amp;quot;Booleans&amp;quot; can store all logical values resulting from the evaluation of predicates in SQL. A column of Boolean type can also be restricted to just &amp;lt;code&amp;gt;TRUE&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;FALSE&amp;lt;/code&amp;gt; though. &lt;br /&gt;
&lt;br /&gt;
In the [[lambda calculus]] model of computing, Boolean values can be represented as [[Church booleans]].&lt;br /&gt;
&lt;br /&gt;
== ALGOL, Java, and C# ==&lt;br /&gt;
One of the earliest languages to provide an explicit &#039;&#039;&#039;Boolean&#039;&#039;&#039; data type was [[ALGOL 60]] (1960) with values &#039;&#039;&#039;true&#039;&#039;&#039; and &#039;&#039;&#039;false&#039;&#039;&#039; and logical operators denoted by symbols &#039;&amp;lt;math&amp;gt;\wedge&amp;lt;/math&amp;gt;&#039; (and), &#039;&amp;lt;math&amp;gt;\vee&amp;lt;/math&amp;gt;&#039; (or), &#039;&amp;lt;math&amp;gt;\supset&amp;lt;/math&amp;gt;&#039; (implies), &#039;&amp;lt;math&amp;gt;\equiv&amp;lt;/math&amp;gt;&#039; (equivalence), and &#039;&amp;lt;math&amp;gt;\neg&amp;lt;/math&amp;gt;&#039; (not).  Due to input device limitations of the time, however, most compilers used alternative representations for the latter, such as &amp;lt;code&amp;gt;AND&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;&#039;AND&#039;&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
This approach (&amp;quot;Boolean is a separate built-in [[primitive data type]]&amp;quot;) was adopted by many later languages, such as [[ALGOL 68]] (1970),&amp;lt;ref&amp;gt;{{cite web| title=Report on the Algorithmic Language ALGOL 68, Section 10.2.2. | url=http://www.fh-jena.de/~kleine/history/languages/Algol68-Report.pdf |format=PDF| accessdate=April 2007 |date=August 1968 }}&amp;lt;/ref&amp;gt; [[Java (programming language)|Java]], and [[C Sharp (programming language)|C#]].&lt;br /&gt;
&lt;br /&gt;
== Fortran ==&lt;br /&gt;
The first version of [[Fortran|FORTRAN]] (1957) and its successor FORTRAN II (1958) did not have logical values or operations; even the conditional &amp;lt;code&amp;gt;IF&amp;lt;/code&amp;gt; statement took an arithmetic expression and branched to one of three locations according to its sign; see [[arithmetic IF]].  FORTRAN IV (1962), however, followed the ALGOL 60 example by providing a Boolean data type (&amp;lt;code&amp;gt;LOGICAL&amp;lt;/code&amp;gt;), truth literals (&amp;lt;code&amp;gt;.TRUE.&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;.FALSE.&amp;lt;/code&amp;gt;), Boolean-valued numeric comparison operators (&amp;lt;code&amp;gt;.EQ.&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;.GT.&amp;lt;/code&amp;gt;, etc.), and logical operators (&amp;lt;code&amp;gt;.NOT.&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;.AND.&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;.OR.&amp;lt;/code&amp;gt;&amp;lt;!-- , &amp;lt;code&amp;gt;.XOR.&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;.EQV.&amp;lt;/code&amp;gt;--&amp;gt;).  In &amp;lt;code&amp;gt;FORMAT&amp;lt;/code&amp;gt; statements, a specific control character (&#039;&amp;lt;code&amp;gt;L&amp;lt;/code&amp;gt;&#039;) was provided for the parsing or formatting of logical values.&amp;lt;ref&amp;gt;Digital Equipment Corporation, &#039;&#039;DECSystem10 FORTRAN IV Programmers Reference Manual&#039;&#039;. Reprinted in &#039;&#039;Mathematical Languages Handbook&#039;&#039;. [http://www.bitsavers.org/pdf/tymshare/tymcom-x/Tymcom-X_Reference_Series_Fortran_IV_Jan73.pdf Online version] accessed 2011-11-16.&amp;lt;/ref&amp;gt;  &amp;lt;!-- Fortran IV and Fortran 66 do not have XOR and EQV --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Lisp and Scheme ==&lt;br /&gt;
The [[Lisp (programming language)|Lisp]] language (1958) never had a built-in Boolean data type.  Instead, conditional constructs like &amp;lt;code&amp;gt;cond&amp;lt;/code&amp;gt; assume that the logical value &amp;quot;false&amp;quot; is represented by the empty list &amp;lt;code&amp;gt;()&amp;lt;/code&amp;gt;, which is defined to be the same as the special atom &amp;lt;code&amp;gt;nil&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;NIL&amp;lt;/code&amp;gt;; whereas any other [[s-expression]] is interpreted as &amp;quot;true&amp;quot;.  For convenience, most modern dialects of Lisp predefine the atom &amp;lt;code&amp;gt;t&amp;lt;/code&amp;gt; to have value &amp;lt;code&amp;gt;t&amp;lt;/code&amp;gt;, so that one can use &amp;lt;code&amp;gt;t&amp;lt;/code&amp;gt; as a mnemonic notation for &amp;quot;true&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
This approach (&amp;quot;any value can be used as a Boolean value&amp;quot;) was retained in most Lisp dialects ([[Common Lisp]], [[Scheme (programming language)|Scheme]], [[Emacs Lisp]]), and similar models were adopted by many [[scripting language]]s, even ones that do have a distinct Boolean type or Boolean values; although which values are interpreted as &amp;quot;false&amp;quot; and which are &amp;quot;true&amp;quot; vary from language to language. In Scheme, for example, the &amp;quot;false&amp;quot; value is an atom distinct from the empty list, so the latter is interpreted as &amp;quot;true&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
== Pascal, Ada, and Haskell ==&lt;br /&gt;
The [[Pascal (programming language)|Pascal]] language (1978) introduced the concept of programmer-defined [[enumerated type]]s.  A built-in &amp;lt;code&amp;gt;Boolean&amp;lt;/code&amp;gt; data type was then provided as a predefined enumerated type with values &amp;lt;code&amp;gt;FALSE&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;TRUE&amp;lt;/code&amp;gt;.  By definition, all comparisons, logical operations, and conditional statements applied to and/or yielded &amp;lt;code&amp;gt;Boolean&amp;lt;/code&amp;gt; values.  Otherwise, the &amp;lt;code&amp;gt;Boolean&amp;lt;/code&amp;gt; type had all the facilities which were available for enumerated types in general — such as ordering and use as indices. On the other hand, the conversion between &amp;lt;code&amp;gt;Boolean&amp;lt;/code&amp;gt;s and integers (or any other types) still required explicit tests or function calls, as in ALGOL 60. This approach (&amp;quot;Boolean is an enumerated type&amp;quot;) was adopted by most later languages which had enumerated types, such as [[Modula]], [[Ada (programming language)|Ada]] and [[Haskell (programming language)|Haskell]].  &lt;br /&gt;
&lt;br /&gt;
== C, C++, Objective-C, Awk, Perl ==&lt;br /&gt;
The initial implementations of the [[C (programming language)|C]] language (1972) provided no Boolean type, and to this day Boolean values are commonly represented by integers (&amp;lt;code&amp;gt;int&amp;lt;/code&amp;gt;s) in C programs.  The comparison operators (&#039;&amp;lt;code&amp;gt;&amp;amp;gt;&amp;lt;/code&amp;gt;&#039;, &#039;&amp;lt;code&amp;gt;==&amp;lt;/code&amp;gt;&#039;, etc.) are defined to return a signed integer (&amp;lt;code&amp;gt;int&amp;lt;/code&amp;gt;) result, either zero (for false) or 1 (for true). Logical operators (&#039;&amp;lt;code&amp;gt;&amp;amp;amp;&amp;amp;amp;&amp;lt;/code&amp;gt;&#039;, &#039;&amp;lt;code&amp;gt;||&amp;lt;/code&amp;gt;&#039;, &#039;&amp;lt;code&amp;gt;!&amp;lt;/code&amp;gt;&#039;, etc.) and condition-testing statements (&#039;&amp;lt;code&amp;gt;if&amp;lt;/code&amp;gt;&#039;, &#039;&amp;lt;code&amp;gt;while&amp;lt;/code&amp;gt;&#039;) assume that zero is false and all other values are true. One problem with this approach is that the tests &amp;lt;code&amp;gt;if(t==TRUE){...}&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;if(t)&amp;lt;/code&amp;gt; are not equivalent.&lt;br /&gt;
&lt;br /&gt;
After enumerated types (&amp;lt;code&amp;gt;enum&amp;lt;/code&amp;gt;s) were added to the [[ANSI C|ANSI version of C]] (1989), many C programmers got used to defining their own Boolean types as such, for readability reasons.  However, enumerated types are equivalent to integers according to the language standards; so the effective identity between Booleans and integers is still valid for C programs.&lt;br /&gt;
&lt;br /&gt;
Standard [[C programming language|C]] (since [[C99]]) and several dialects of C such as [[Objective-C]] provide definitions of a Boolean type as an integer type and macros for &amp;quot;false&amp;quot; and &amp;quot;true&amp;quot; as 0 and 1, respectively. Thus logical values can be stored in integer variables, and used anywhere integers would be valid, including in indexing, arithmetic, parsing, and formatting. This approach (&amp;quot;Boolean values are just integers&amp;quot;) has been retained in all later versions of C.   &lt;br /&gt;
&lt;br /&gt;
[[C++]] has a separate Boolean data type (&amp;lt;code&amp;gt;&#039;bool&#039;&amp;lt;/code&amp;gt;), but with automatic conversions from scalar and pointer values that are very similar to those of C.  This approach was adopted also by many later languages, especially by some [[scripting language|scripting]] ones such as [[AWK]].&lt;br /&gt;
&lt;br /&gt;
[[Objective-C]] also has a separate Boolean data type (&amp;lt;code&amp;gt;&#039;BOOL&#039;&amp;lt;/code&amp;gt;), with possible values being &amp;lt;code&amp;gt;YES&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;NO&amp;lt;/code&amp;gt;, equivalents of true and false respectively.&amp;lt;ref&amp;gt;http://developer.apple.com/library/ios/#documentation/cocoa/conceptual/ProgrammingWithObjectiveC/FoundationTypesandCollections/FoundationTypesandCollections.html&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Perl]] has many values of &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt;: the number zero, the strings &amp;quot;0&amp;quot; and &amp;quot;&amp;quot;, the empty list &amp;quot;()&amp;quot;, and the special value &amp;lt;code&amp;gt;undef&amp;lt;/code&amp;gt;.&amp;lt;ref&amp;gt;{{cite web |url=http://perldoc.perl.org/perlsyn.html#Truth-and-Falsehood |title=perlsyn - Perl Syntax / Truth and Falsehood |accessdate=10 September 2013}}&amp;lt;/ref&amp;gt; Everything else evaluates to &amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Python, Ruby, and JavaScript ==&lt;br /&gt;
In [[Python (programming language)|Python]] from version 2.3 forward, there is a &amp;lt;code&amp;gt;bool&amp;lt;/code&amp;gt; type which is a [[subclass (computer science)|subclass]] of &amp;lt;code&amp;gt;int&amp;lt;/code&amp;gt;, the standard integer type.&amp;lt;ref&amp;gt;{{cite web | last = Van Rossum | first = Guido | authorlink = Guido van Rossum | title =  PEP 285 -- Adding a bool type | date = 3 April 2002 | url = http://www.python.org/dev/peps/pep-0285/ | accessdate = 15 May 2013}}&amp;lt;/ref&amp;gt; It has two possible values: &amp;lt;code&amp;gt;True&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;False&amp;lt;/code&amp;gt;, which are &amp;quot;special versions&amp;quot; of 1 and 0 respectively and behave as such in arithmetic contexts. In addition, a numeric value of zero (integer or fractional), the null value (&amp;lt;code&amp;gt;None&amp;lt;/code&amp;gt;), the empty [[String (computer science)|string]], and empty containers (i.e. [[list (computing)|lists]], [[set (computing)|sets]], etc.) are considered Boolean false; all other values are considered Boolean true by default.&amp;lt;ref&amp;gt;{{cite web |url= http://docs.python.org/3.3/reference/expressions.html |title= Expressions |website= Python v3.3.2 documentation | accessdate = 15 May 2013}}&amp;lt;/ref&amp;gt; Classes can define how their instances are treated in a Boolean context through the special method &amp;lt;code&amp;gt;__nonzero__&amp;lt;/code&amp;gt; (Python 2) or &amp;lt;code&amp;gt;__bool__&amp;lt;/code&amp;gt; (Python 3). For containers, &amp;lt;code&amp;gt;__len__&amp;lt;/code&amp;gt; (the special method for determining the length of containers) is used if the explicit Boolean conversion method is not defined.&lt;br /&gt;
&lt;br /&gt;
In [[Ruby (programming language)|Ruby]], on the other hand, only &amp;lt;code&amp;gt;nil&amp;lt;/code&amp;gt; (Ruby&#039;s null value) and a special &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt; object are &amp;quot;false&amp;quot;, everything else (including the integer 0 and empty arrays) is &amp;quot;true&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
In [[JavaScript]], the empty string (&amp;lt;code&amp;gt;&amp;quot;&amp;quot;&amp;lt;/code&amp;gt;), &amp;lt;code&amp;gt;null&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;undefined&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;[[NaN]]&amp;lt;/code&amp;gt;, +0, [[−0]] and &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt;&amp;lt;ref&amp;gt;{{cite web &lt;br /&gt;
|url=http://www.ecma-international.org/publications/files/ECMA-ST/ECMA-262.pdf |title=ECMAScript Language Specification |page=43}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
are sometimes called &amp;quot;falsy&amp;quot;, and their [[complement (set theory)|complement]], &amp;quot;truthy&amp;quot;, to distinguish between strictly [[type-checked]] and [[type coercion|coerced]] Booleans.&amp;lt;ref&amp;gt;{{cite web |url=http://javascript.crockford.com/style2.html |title=The Elements of JavaScript Style |publisher=Douglas Crockford |accessdate=5 March 2011}}&amp;lt;/ref&amp;gt; Languages such as [[PHP]] also use this approach.&lt;br /&gt;
&lt;br /&gt;
== SQL ==&lt;br /&gt;
The [[SQL:1999]] standard introduced a BOOLEAN data type as an optional feature (T031). When restricted by a &amp;lt;code&amp;gt;NOT NULL&amp;lt;/code&amp;gt; constraint, a SQL BOOLEAN behaves like Booleans in other languages. In SQL however, the BOOLEAN type is [[nullable type|nullable]] by default like all other SQL data types, meaning it can have the special [[Null (SQL)|null]] value as well. Although the SQL standard defines three [[Literal (computer programming)|literals]] for the BOOLEAN type&amp;amp;mdash;TRUE, FALSE and UNKNOWN&amp;amp;mdash;, it also says that the NULL BOOLEAN and UNKNOWN &amp;quot;may be used interchangeably to mean exactly the same thing&amp;quot;.&amp;lt;ref name=&amp;quot;Date2011&amp;quot;&amp;gt;{{cite book|author=C. Date|title=SQL and Relational Theory: How to Write Accurate SQL Code|url=http://books.google.com/books?id=Ew06OZtjuJEC&amp;amp;pg=PA83|year=2011|publisher=O&#039;Reilly Media, Inc.|isbn=978-1-4493-1640-2|page=83}}&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;ISO/IEC 9075-2:2011 §4.5&amp;lt;/ref&amp;gt; This has caused some controversy because the identification subjects UNKNOWN to the equality comparison rules for NULL. More precisely UNKNOWN = UNKNOWN is not TRUE but UNKNOWN/NULL.&amp;lt;ref name=&amp;quot;Prigmore2007&amp;quot;&amp;gt;{{cite book|author=Martyn Prigmore|title=Introduction to Databases With Web Applications|url=http://books.google.com/books?id=PKggKqIZnN0C&amp;amp;pg=PA197|year=2007|publisher=Pearson Education Canada|isbn=978-0-321-26359-9|page=197}}&amp;lt;/ref&amp;gt; As of 2012 few major SQL systems implement the T031 feature.&amp;lt;ref&amp;gt;Troels Arvin, [http://troels.arvin.dk/db/rdbms/#data_types-boolean Survey of BOOLEAN data type implementation]&amp;lt;/ref&amp;gt; [[PostgreSQL]] is a notable exception, although it does not implement the UNKNOWN literal; NULL can be used instead.&amp;lt;ref&amp;gt;http://www.postgresql.org/docs/current/static/datatype-boolean.html&amp;lt;/ref&amp;gt; (PostgreSQL does implement the IS UNKNOWN operator, which is part of an orthogonal feature, F571.) In other SQL implementations various ad hoc solutions are used, like [[bit]], [[byte]], and [[character (computing)|character]] to simulate Boolean values.&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
*[[true and false (Unix)|true and false]] commands for [[shell scripting]]&lt;br /&gt;
*[[Shannon&#039;s expansion]]&lt;br /&gt;
*[[stdbool.h]] — C99 definitions for boolean&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
{{Reflist|2}}&lt;br /&gt;
&lt;br /&gt;
{{data types}}&lt;br /&gt;
&lt;br /&gt;
{{DEFAULTSORT:Boolean Data Type}}&lt;br /&gt;
[[Category:Boolean algebra]]&lt;br /&gt;
[[Category:Data types]]&lt;br /&gt;
[[Category:Primitive types]]&lt;br /&gt;
[[Category:Articles with example ALGOL 68 code]]&lt;/div&gt;</summary>
		<author><name>117.193.46.63</name></author>
	</entry>
</feed>