FSharp.PowerPack.Compatibility
The spec value describes the action of the argument,
and whether it expects a following parameter.
"usage specs use" prints the help for each argument.
"parse specs f use" parses the arguments given by Sys.argv
according to the argument processing specifications "specs".
Arguments begin with "-". Non-arguments are passed to "f" in
order. "use" is printed as part of the usage line if an error occurs.
Permitted arguments are specified using triples: (arg, action, help).
Actions are:
Unit(f): call f, no subseq. arg
Set(br): set ref to 'true', no subseq. arg.
Clear(br): set ref to 'false, no subseq. arg.
String(f): pass the subseq. arg to f
Int(f): pass the subseq. arg to f
Float(f): pass the subseq. arg to f
Rest(f): pass all subseq. args to f in order
A simple command-line argument processor.
As for Array2D.pin, except that the caller is responsible for calling Free on the returned GCHandle in order
to release the pin.
Pin the given array for the duration of a single call to the given function. A native pointer to
the first element in the array is passed to the given function. Cleanup the GCHandle associated with the
pin when the function completes, even if an exception is raised.
Apply a function to each element of the array, threading an accumulator argument
through the computation. If the input function is <c>f</c> and the elements are <c>i0...iN</c>
then computes <c>f i0 (...(f iN s))</c>
Create a jagged 2 dimensional array. Synonym for createJaggedMatrix.
As for Array.pin, except that the caller is responsible for calling Free on the returned GCHandle in order
to release the pin.
Pin the given array for the duration of a single call to the given function. A native pointer to
the first element in the array is passed to the given function. Cleanup the GCHandle associated with the
pin when the function completes, even if an exception is raised.
Like reduceBack, but return both the intermediary and final results
Like reduce, but return both the intermediary and final results
Is an element in the array, uses (=) equality.
Create a jagged 2 dimensional array.
Compatibility operations on arrays.
Read the given number of bytes as ASCII and add the resulting string
to the buffer. Warning: this assumes an ASCII encoding for the I/O channel, i.e. it uses
Pervasives.really_input and then use ascii_to_string to produce the string
to add.
Clears the buffer (same as Buffer.clear).
Number of characters in the buffer.
Create a buffer with suggested size.
Gets the string built from the buffer.
Clears the buffer.
Given a string, start position and length add that substring to the buffer.
Add string to the buffer.
Add character to the buffer.
Add second buffer to the first.
Imperative buffers for building strings, a shallow interface to <c>System.Text.StringBuilder</c>
Converts a byte to a string
Converts a string to a byte
Converts a byte to an unsigned 32-bit integer
Converts an unsigned 32-bit integer to a byte
Converts a byte to a 16-bit integer
Converts a 16-bit integer to a byte
Converts a byte to a 32-bit integer
Converts a 32-bit integer to a byte
Converts a byte to a 32-bit integer
Converts a 32-bit integer to a byte
Converts a byte to a char
Converts a char to a byte
Shifts the binary representation a by n bits to the right
Shifts the binary representation a by n bits to the left
Combines the binary representation of a and b by bitwise xor
Combines the binary representation of a and b by bitwise or
Returns the bitwise logical negation of a
Combines the binary representation of a and b by bitwise and
Compares a and b and returns 1 if a > b, -1 if b < a and 0 if a = b
Returns the remainder of a divided by b
Returns a minus b
Returns a multiplied by b
Returns a divided by b
Returns the sum of a and b
Returns the predeccessor of the argument wrapped around 0uy
Returns the successor of the argument wrapped around 255uy
The value one as a System.Byte
The value zero as a System.Byte
Byte (8-bit) operations.
Converts the value of a Unicode character to its uppercase equivalent
Converts the value of a Unicode character to its lowercase equivalent
Compares a and b and returns 1 if a > b, -1 if b < a and 0 if a = b
Converts the value of the specified Unicode character to the equivalent 32-bit signed integer
Converts the value of the specified 32-bit signed integer to its equivalent Unicode character
Unicode characters, i.e. the <c>System.Char</c> type. see also the operations
in <c>System.Char</c> and the <c>System.Text.Encoding</c> interfaces if necessary.
"temp_file f s" returns a hitherto unused new file name. "f" and "s"
are hints as to a suitable file name and suffix for the file.
"quote s" is designed for use to quote a filename when using it
for a system command. It returns ("\'" ^ s ^ "\'").
Returns true if the path is relative to the current directory but does not begin with
an explicit "." or ".."
Is the path is relative to the current directory or absolute.
Return true if the filename has a "." extension
"parent_dir_name" returns the name for the directory above the current directory on
this OS.
The name used for the current directory on this OS.
"dirname" and "basename" decompose a filename into a directory name
and a filename, i.e. "concat (dirname s) (basename s) = s"
"dirname" and "basename" decompose a filename into a directory name
and a filename, i.e. "concat (dirname s) (basename s) = s"
"concat a b" returns System.IO.Path.Combine(a,b), i.e. the
two names conjoined by the appropriate directory separator character
for this architecture.
Assuming "check_suffix f s" holds, "chop_suffix f s" returns the
filename "f" with the suffix "s" removed.
"chop_extension f" removes the extension from the given
filename. Raises ArgumentException if no extension is present.
"check_suffix f s" returns true if filename "f" ends in suffix "s",
e.g. check_suffix "abc.fs" ".fs" returns true.
Common filename operations. This module is included to make it possible to cross-compile
code with other ML compilers. See also <c>System.IO.Path</c>
Converts a 64-bit float to raw 64-bit representation
Converts a raw 64-bit representation to a 64-bit float
Converts a 64-bit float to a string
Converts a string to a 64-bit float
Converts a 64-bit float to a 32-bit float
Converts a 32-bit float to a 64-bit float
Converts a 64-bit float to a 64-bit integer
Converts a 64-bit integer to a 64-bit float
Converts a 64-bit float to a 32-bit integer
Converts a 32-bit integer to a 64-bit float
Converts a 64-bit float to a 32-bit integer
Converts a 32-bit integer to a 64-bit float
Compares a and b and returns 1 if a > b, -1 if b < a and 0 if a = b
Returns a minus b
Returns -a
Returns a multiplied by b
Returns a divided by b
Returns the sum of a and b
ML-like operations on 64-bit System.Double floating point numbers.
A collection of operations for creating and using hash tables based on particular type-tracked hash/equality functions.
Generated by the Hashtbl.Make and Hashtbl.MakeTagged functors. This type is for use when you wish to
specify a comparison function once and carry around an object that is a provider of (i.e. a factory for) hashtables
that utilize that comparison function.
The 'Tag' type parameter is used to track information about the comparison function, which helps ensure
that you don't mixup maps created with different comparison functions
OCaml compatible type name, for use when not opening module, e.g. Hashtbl.t
Build a collection of operations for creating and using
hashtables based on the given hash/equality functions. This returns a record
that contains the functions you use to create and manipulate tables of
this kind. The returned value is much like an ML module. You should call Make once for
each new pair of key/value types. You may need to constrain the result
to be an instantiation of Provider.
let MyStringHashProvider : Provider<string,int> = Hashtbl.Make(myStringHash,myStringEq)
Same as Make, except track the comparison function being used through an additional type parameter.
To use this function accurately you need to define a new named class that implements IEqualityComparer and
pass an instance of that class as the first argument. For example:
type MyHasher =
class
new() = { }
interface IEqualityComparer<string> with
member self.GetHashCode(x) = ...
member self.Equals(x,y) = ...
end
end
let MyStringHashProvider : Hashtbl.Provider<string,int> = Hashtbl.MakeTagged(new MyStringHasher())
Hash on the identity of an object.
Hash on the structure of a value according to the F# structural hashing
conventions
Lookup the key's data in the table
Replace the latest binding for the given key
Remove the latest binding for the given key
Test for the existence of any bindings for the given key
Apply the given function to each binding in the hash table
Fold over all bindings
Return all bindings for the given key
Lookup key's data in the table.
Raises exception is key not in table, if this could happen you should be using tryFind.
Create a copy of the table. Remember they are imperative and get mutated.
Empty the table.
Create hash table using the given data
Create a hash table using the given data
Add key and data to the table.
Create a hash table with the suggested initial size.
Inlined to enable generation of efficient hash routines for the key type in the common case.
Multi-entry hash tables using the structural "hash" and "equals" functions.
These tables can be used with keys of any type, but you should check that
structural hashing and equality are correct for your key type.
Structural hashing is efficient but not a suitable choice in all circumstances,
e.g. may not hash efficiently on non-reference types and deeply-structured types.
Better efficiency is typically achieved if key types are F#-generated
types.
These hash tables may map items to multiple keys (see find_all).
The implementations are not safe for concurrent reading/writing,
and so users of these tables should take an appropriate lock
before reading/writing if used in a concurrent setting.
Converts a 32-bit float to a raw 32-bit representation
Converts a raw 32-bit representation to a 32-bit float
Converts a 64-bit float to a raw 32-bit representation
Converts a raw 32-bit representation to a 64-bit float
Converts a 32-bit integer to a string
Converts a string to a 32-bit integer
Converts a 32-bit unsigned integer to a 32-bit integer
Converts a 32-bit unsigned integer to a 32-bit integer
Converts a 32-bit unsigned integer to a 64-bit integer
Converts a 64-bit unsigned integer to a 32-bit integer
Converts a 32-bit integer to a 32-bit unsigned integer
Converts a 32-bit unsigned integer to a 32-bit integer
Converts a 32-bit integer to a 32-bit integer (included for ML compatability)
Converts a 32-bit integer to a 32-bit integer (included for ML compatability)
Converts a 32-bit integer to a 32-bit float
Converts a 32-bit float to a 32-bit integer
Converts a 32-bit integer to a 64-bit float
Converts a 64-bit float to a 32-bit integer
Shifts the binary representation a by n bits to the right; high-order bits are zero-filled
Shifts the binary representation a by n bits to the right; high-order empty bits are set to the sign bit
Shifts the binary representation a by n bits to the left
Combines the binary representation of a and b by bitwise xor
Combines the binary representation of a and b by bitwise or
Returns the bitwise logical negation of a
Combines the binary representation of a and b by bitwise and
Compares a and b and returns 1 if a > b, -1 if b < a and 0 if a = b
Returns a minus b
Returns the remainder of a divided by b
Returns -a
Returns a multiplied by b
Returns a divided by b
Returns the sum of a and b
Returns the absolute value of the argument
Returns the successor of the argument
Returns the smallest 32-bit signed integer
Returns the largest 32-bit signed integer
Returns the predeccessor of the argument
The value minus one as a System.Int32
The value one as a System.Int32
The value zero as a System.Int32
Basic operations on 32-bit integers. The type int32 is identical to <c>System.Int32</c>.
Converts a 64-bit float to a raw 64-bit representation
Converts a raw 64-bit representation to a 64-bit float
Converts a 64-bit integer to a string
Converts a string to a 64-bit integer
Converts a 64-bit integer to a native integer
Converts a native integer to a 64-bit integer
Converts a 64-bit integer to an unsigned 64-bit integer
Converts an unsigned 64-bit integer to a 64-bit integer
Converts a 64-bit integer to a 32-bit integer
Converts a 32-bit integer to a 64-bit integer
Converts a 64-bit integer to a 32-bit integer
Converts a 32-bit integer to a 64-bit integer
Converts a 64-bit integer to a 64-bit float
Converts a 64-bit float to a 64-bit integer
Converts a 64-bit integer to a 32-bit float
Converts a 32-bit float to a 64-bit integer
Shifts the binary representation a by n bits to the right; high-order bits are zero-filled
Shifts the binary representation a by n bits to the right; high-order empty bits are set to the sign bit
Shifts the binary representation a by n bits to the left
Combines the binary representation of a and b by bitwise xor
Combines the binary representation of a and b by bitwise or
Returns the bitwise logical negation of a
Combines the binary representation of a and b by bitwise and
Compares a and b and returns 1 if a > b, -1 if b < a and 0 if a = b
Returns a minus b
Returns the remainder of a divided by b
Returns -a
Returns a multiplied by b
Returns a divided by b
Returns the sum of a and b
Returns the absolute value of the argument
The value minus one as a System.Int64
Returns the smallest 64-bit signed integer
Returns the largest 64-bit signed integer
Returns the successor of the argument
Returns the predeccessor of the argument
The value one as a System.Int64
The value zero as a System.Int64
Basic operations on 64-bit integers. The type int64 is identical to <c>System.Int64</c>.
Build a lazy (delayed) value from the given computation
Check if a lazy (delayed) value has already been computed
Build a lazy (delayed) value from the given pre-computed value.
Build a lazy (delayed) value from the given computation
See Lazy.Force.
ASCII LexBuffers
The type "lexbuf" is opaque, but has an internal position information field
that can be updated by setting "lexbuf.EndPos", for example if you wish
to update the other fields in that position data before or during
lexing. You will need to do this if you wish to maintain accurate
line-count information. If you do this and wish to maintain strict
cross-compiling compatibility with OCamlLex and other tools you may need code
to conditionally use lexbuf_set_curr_p when compiling F# code.
same as lexeme_end_p
Return absolute positions into the entire stream of characters
Return absolute positions into the entire stream of characters
Return the positions stored in the lexbuf for the matched string
Return the positions stored in the lexbuf for the matched string
Return a character from the matched string, innterpreting the bytes using an ASCII encoding
Return the bytes for the matched string
Return the matched string interpreting the bytes using the given Unicode text encoding
Return the matched string
Fuel a lexer from function that fills an array of bytes up to the given length, returning the
number of bytes filled.
Fuel a lexer from an array of bytes
Fuel a lexer from a string, converted to ascii using <c>System.Text.Encoding.ASCII.GetBytes</c>
Fuel a lexer using the given BinaryReader.
Fuel a lexer using the given TextReader or StreamReader.
The characters read are decoded to bytes using the given encoding (e.g. System.Text.Encoding.ASCII)
and the bytes presented to the lexer. The encoding used to decode the characters
is associated with the expectations of the lexer (e.g. a lexer may be constructed to accept only
ASCII or pseudo-UTF8 bytes) and will typically be different to
the encoding used to decode the file.
Fuel a lexer using the given in_channel. The bytes are read using Pervasives.input.
If the in_channel is a textual channel the bytes are
presented to the lexer by decoding the characters using System.Text.Encoding.ASCII.
Remove all input, though don't discard the except the current lexeme
Lexing: ML-like lexing support
This file maintains rough compatibility for lexbuffers used by some ML
laxer generators. The lexbuf carries an associated pair of positions.
Beware that only the "cnum" (absolute character number) field is automatically
updated as each lexeme is matched. Upon each successful match the prior end
position is transferred to be the start position and a new start position
is allocated with an updated pos_cnum field.
Return the tail of the list.
Raises <c>System.ArgumentException</c> if <c>list</c> is empty
Return the first element of the list.
Raises <c>System.ArgumentException</c> if <c>list</c> is empty
"rev_append l1 l2" evaluates to "append (rev l1) l2"
"rev_map2 f l1 l2" evaluates to "map2 f (rev l1) (rev l2)"
"rev_map f l1" evaluates to "map f (rev l1)"
Return true if the list is not empty.
See <c>mem</c>, but uses the physical equality operator (==) for equality tests.
See <c>remove_assoc</c>, but uses the physical equality operator (==) for equality tests.
See <c>mem_assoc</c>, but uses the physical equality operator (==) for equality tests.
See <c>try_assoc</c>, but uses the physical equality operator (==) for equality tests.
See <c>assoc</c>, but uses the physical equality operator (==) for equality tests
Remove pair for key from the association list (if it's there).
Does the key have pair in the association list?
Lookup key's data in association list, uses (=) equality,
returning "Some data" or "None".
Lookup key's data in association list, uses (=) equality.
Raise <c>System.IndexOutOfRangeException</c> exception if key not found, in which case you should typically use <c>try_assoc</c> instead.
Is an element in the list. Elements are compared using generic equality.
Is an element in the list. Elements are compared using generic equality.
Like reduceBack, but return both the intermediary and final results
Like reduce, but return both the intermediary and final results
Compatibility operations on lists.
A provider for creating and using maps based on a particular comparison function.
The 'Tag type parameter is used to track information about the comparison function.
A functor to build a collection of operations for creating and using
maps based on the given comparison function. This returns a record that
contains the functions you use to create and manipulate maps of
this kind. The returned value is much like an ML module.
Language restrictions related to polymorphism may mean you
have to create a new instantiation of for each toplevel
key/value type pair.
To use this function you need to define a new named class that implements IComparer and
pass an instance of that class as the first argument. For example:
type MyComparer =
new() = { }
interface IComparer<string> with
member self.Compare(x,y) = ...
let MyStringMapProvider : Map.Provider < string,int > = Map.MakeTagged(new MyComparer())
Negation of Obj.eq (i.e. reference/physical inequality)
See Microsoft.FSharp.Core.LanguagePrimitives.PhysicalEquality
See Microsoft.FSharp.Core.Operators.box
See Microsoft.FSharp.Core.Operators.unbox
You can initialize error recovery by raising the Parse_error exception.
Parsing: parser support for parsers produced by fsyacc.
Parsers generated by fsyacc provide location information within parser
actions. However that information is not available globally, but
rather is accessed via the functions available on the following local
variable which is available in all parser actions:
parseState : 'a Microsoft.FSharp.Text.Parsing.IParseState
However, this is not compatible with the parser specifications used
with ocamlyacc and similar tools, which make a single parser state available
globally. If you wish to use a global parser state (e.g. so your code will
cross-compile with OCaml) then you can use the functions in this file.
You will need to either generate the parser with '--ml-compatibility' option
or add the code
Parsing.set_parse_state parseState;
at the start of each action of your grammar. The functions below
simply report the results of corresponding calls to the latest object
specified by a call to set_parse_state.
Note that there could be unprotected multi-threaded concurrent access for the
parser information, so you should not in general use these
functions if there may be more than one parser active, and
should instead use the functions directly available from the parseState
object.
An pseudo-abstraction over binary and textual output channels.
OCaml-compatible channels conflate binary and text IO, and for this reasons their
use from F# is somewhat deprecated The direct use of System.IO StreamWriter, TextWriter and
BinaryWriter objects is preferred, e.g. see System.IO.File.CreateText). Well-written OCaml code
that simply opens either a channel in text or binary mode and then does text
or binary I/O using the OCaml functions will work, though care must
be taken with regard to end-of-line characters (see output_char below).
This library pretends that an out_channel is just a System.IO.TextWriter. Channels
created using open_out_bin maintain a private System.IO.BinaryWriter, which will be used whenever
do I/O using this channel.
A pseudo-abstraction over binary and textual input channels.
OCaml-compatible channels conflate binary and text IO, and for this reasons their
use from F# is somewhat deprecated (direct use of System.IO StreamReader, TextReader and
BinaryReader objects is preferred, e.g. see System.IO.File.OpenText).
Well-written OCaml-compatible code that simply opens either a channel in text or binary
mode and then does text or binary I/O using the OCaml-compatible functions below
will work, though care must be taken with regard to end-of-line characters (see
input_char below).
This library pretends that an in_channel is just a System.IO.TextReader. Channel values
created using open_in_bin maintain a private System.IO.BinaryReader, which will be used whenever
you do I/O using this channel.
InChannel.of_BinaryReader and InChannel.of_StreamReader allow you to build input
channels out of the corresponding .NET abstractions.
This type is present primarily for compatibility with other versions of ML. When
not cross-compiling we recommend using the .NET I/O libraries
Throw an <c>KeyNotFoundException</c> exception
Throw an ArgumentException
Read a line from the console, without the end-of-line character.
Read an integer from the console.
Read a floating point number from the console.
Print a character to the stderr stream
Flush all pending output on the channel to the physical
output device.
Set the binary mode. If the binary mode is changed from "true" to
"false" then a StreamWriter is created to write the binary stream. The StreamWriter uses
the default text encoding System.Text.Encoding.Default.
Set the current position in the output channel, measured from the
start of the channel.
Return the current position in the output channel, measured from the
start of the channel. Not valid on all channels.
Serialize the given value to the output channel.
Write the given Unicode string to the output channel. See output_char for the treatment of
'\n' characters within the string.
Write the given Unicode character to the output channel.
If the output channel is a binary stream and the UTF-16 value of the Unicode character is greater
than 255 then ArgumentException is thrown.
No CRLF translation is done on output. That is, if the output character is
'\n' (LF) characters they will not be written as '\r\n' (CRLF) characters, regardless
of whether the underlying operating system or output stream uses CRLF as the default
line-feed character.
Write the given byte to the output channel. No CRLF translation is
performed.
Write the given integer to the output channel in binary format.
Only valid on binary channels.
Write the given range of bytes to the output channel.
Return the length of the output channel.
Raise an exception if not an app
Close the given output channel
Open the given file to write in the mode according to the specified flags
Open the given file to write in binary-mode
Open the given file to write in text-mode using the
System.Text.Encoding.Default encoding
See output_char for a description of CR-LF translation
done on output.
Set the binary mode to true or false. If the binary mode is changed from "true" to
"false" then a StreamReader is created to read the binary stream. The StreamReader uses
the default text encoding System.Text.Encoding.Default
Reads bytes from the channel. Blocks if the bytes are not available.
For text channels this only accepts UTF-16 bytes with an encoding less than 256.
Raise End_of_file (= System.IO.EndOfStreamException) if end of file reached.
Reads bytes from the channel. Blocks if the bytes are not available.
See 'input' for treatment of text channels.
Raise End_of_file (= System.IO.EndOfStreamException) if end of file reached.
Report the current position in the input channel
Input a single serialized value from a binary stream. Raise End_of_file (= System.IO.EndOfStreamException) if end of file reached.
Input a single line. Raise End_of_file (= System.IO.EndOfStreamException) if end of file reached.
Input a single character. Raise End_of_file (= System.IO.EndOfStreamException) if end of file reached.
Input a single byte.
For text channels this only accepts characters with a UTF16 encoding that fits in a byte, e.g. ASCII.
Raise End_of_file (= System.IO.EndOfStreamException) if end of file reached.
Input a binary integer from a binary channel. Compatible with output_binary_int.
Attempt to input characters from a channel. Does not block if inpout is not available.
Raise End_of_file (= System.IO.EndOfStreamException) if end of file reached.
No CRLF translation is done on input, even in text mode. That is, if an input file
has '\r\n' (CRLF) line terminators both characters will be seen in the input.
Attempt to input the given number of bytes from the channel, writing them into the
buffer at the given start position. Does not block if the bytes are not available.
The use of this function with a channel performing byte-to-character translation (e.g. one
created with open_in, open_in_utf8 or open_in_encoded, or one
or built from a StreamReader or TextReader) is not recommended.
Instead, open the channel using open_in_bin or InChannel.of_BinaryReader.
If used with a StreamReader channel, i.e. one created using
open_in, open_in_utf8 or open_in_encoded, or one
or built from a StreamReader, this function reads bytes directly from the underlying
BaseStream. This may not be appropriate if any other input techniques are being
used on the channel.
If used with a TextReader channel (e.g. stdin), this function reads characters from the
stream and then fills some of the byte array with the decoding of these into
bytes, where the decoding is performed using the System.Text.Encoding.Default encoding
Raise End_of_file (= System.IO.EndOfStreamException) if end of file reached.
Return the length of the input channel
Close the channel
Open the given file in the mode specified by the given flags
Open the given file to read in binary-mode
Open the given file to read.
In the absence of an explicit encoding (e.g. using Open_encoding) open_in
uses the default text encoding (System.Text.Encoding.Default). If you want to read a file
regardless of encoding then you should use binary modes. Note that .NET's
"new StreamReader" function defaults to use a utf8 encoding, and also attempts
to determine an automatic encoding by looking for "byteorder-marks" at the head
of a text file. This function does not do this.
No CR-LF translation is done on input.
This value is present primarily for compatibility with other versions of ML
This value is present primarily for compatibility with other versions of ML
This value is present primarily for compatibility with other versions of ML
This value is present primarily for compatibility with other versions of ML
The smallest value that when added to 1.0 gives a different value to 1.0
This value is present primarily for compatibility with other versions of ML
The lowest non-denormalized positive IEEE64 float
This value is present primarily for compatibility with other versions of ML
The highest representable positive value in the 'float' type
This value is present primarily for compatibility with other versions of ML. In F#
the overloaded operators may be used.
This value is present primarily for compatibility with other versions of ML. In F#
the overloaded operators may be used.
This value is present primarily for compatibility with other versions of ML. In F#
the overloaded operators may be used.
This value is present primarily for compatibility with other versions of ML. In F#
the overloaded operators may be used.
This value is present primarily for compatibility with other versions of ML. In F#
the overloaded operators may be used.
This value is present primarily for compatibility with other versions of ML
The exception thrown by <c>invalid_arg</c> and misues of F# library functions
Negation on integers of the 'int' type
The highest representable value in the 'int' type
The lowest representable value in the 'int' type
n+1 (no overflow checking)
n-1 (no overflow checking)
1D Array element set-accessor ('setter')
1D Array element get-accessor ('getter')
Negation of the '==' operator, see also Obj.eq
Reference/physical equality.
True if boxed versions of the inputs are reference-equal, OR if
both are value types and the implementation of Object.Equals for the type
of the first argument returns true on the boxed versions of the inputs.
In normal use on reference types or non-mutable value types this function
has the following properties:
- returns 'true' for two F# values where mutation of data
in mutable fields of one affects mutation of data in the other
- will return 'true' if (=) returns true
- hashq will return equal hashes if (==) returns 'true'
The use on mutable value types is not recommended.
The exception thrown by 'assert' failures.
A future release of F# may map this exception to a corresponding .NET exception.
Non-exhaustive match failures will raise Match failures
A future release of F# may map this exception to a corresponding .NET exception.
The type of simple immutable lists
The type of None/Some options
The type of pointers to mutable reference cells
Concatenate two lists.
Concatenate two strings. The overlaoded operator '+' may also be used.
Exit the current hardware isolated process, if security settings permit,
otherwise raise an exception. Calls System.Environment.Exit.
Increment a mutable reference cell containing an integer
Decrement a mutable reference cell containing an integer
Throw an exception
Throw a 'Failure' exception
Create a mutable reference cell
Assign to a mutable reference cell
Dereference a mutable reference cell
Absolute value of the given integer
The "hash" function is a structural hash function. It is
designed to return equal hash values for items that are
equal according to the polymorphic equality
function Pervasives.(=) (i.e. the standard "=" operator).
Minimum based on structural comparison
Maximum based on structural comparison
Structural comparison
Structural greater-than-or-equal
Structural greater-than
Structural equality
Structural inequality
Structural less-than-or-equal comparison
Structural less-than comparison
Pervasives: Additional OCaml-compatible bindings
Compatibility module to display data about exceptions.
Simple operations on signed bytes
A collection of operations for creating and using sets based on a particular comparison function.
The 'Tag' type parameter is used to track information about the comparison function.
A functor to build a collection of operations for creating and using
sets based on the given comparison function. This returns a record that
contains the functions you use to create and manipulate maps of
this kind. The returned value is much like an ML module.
To use this function you need to define a new named class that implements IComparer and
pass an instance of that class as the first argument. For example:
type MyComparer() =
interface IComparer<string> with
member self.Compare(x,y) = ...
let MyStringSetProvider = Set.MakeTagged(new MyComparer())
Build a collection of operations for creating and using
maps based on a single consistent comparison function. This returns a record
that contains the functions you use to create and manipulate maps all of which
use this comparison function. The returned value is much like an ML module.
Use MakeTagged if you want additional type safety that guarantees that two sets
based on different comparison functions can never be combined in inconsistent ways.
Immutable sets implemented via binary trees
Return a string with all characters converted to uppercase.
Return the index of the first occurrence of the given character
starting from the given index proceeding backwards.
Return the index of the first occurrence of the given character
from the end of the string proceeding backwards
Return true if the string contains the given character prior to the given index
Return the first index of the given character in the
range from the given start position to the end of the string.
Raise <c>KeyNotFoundException</c> if
the string does not contain the given character.
Return the first index of the given character in the
string. Raise <c>KeyNotFoundException</c> if
the string does not contain the given character.
Return true is the given string contains the given character in the
range from the given start index to the end of the string.
Return true is the given string contains the given character in the
range specified by the given start index and the given length
Return true is the given string contains the given character
Return s string of length 1 containing the given character
Return a string of the given length containing repetitions of the given character
Return a new string with all characters converted to lowercase
Return a substring of length 'length' starting index 'start'.
Returns the character at the specified position in the string
Compare the given strings using ordinal comparison
Removes all occurrences of a set of characters specified in a
list from the beginning and end of this instance.
Split the string using the given list of separator characters.
Trimming is also performed at both ends of the string and any empty
strings that result from the split are discarded.
Return a string with the first character converted to lowercase.
Return a string with the first character converted to uppercase.
Compatibility module for string processing. Richer string operations
are available via the member functions on strings and other functionality in
the <c>System.String</c> type
and the <c>System.Text.RegularExpressions</c> namespace.
Time consumed by the main thread. (for approximate timings).
Generally returns only the processor time used by the main
thread of the application.
The number of bits in the "int" type.
Path of the current executable, using
<c>System.IO.Path.Combine(System.AppDomain.CurrentDomain.BaseDirectory,System.AppDomain.CurrentDomain.FriendlyName)</c>
Run the command and return it's exit code.
Warning: 'command' currently attempts to execute the string using
the 'cmd.exe' shell processor. If it is not present on the system
then the operation will fail. Use System.Diagnostics.Process
directly to run commands in a portable way, which involves specifying
the program to run and the arguments independently.
Returns the current working directory for the process using <c>System.IO.Directory.GetCurrentDirectory</c>
Sets the current working directory for the process using <c>System.IO.Directory.SetCurrentDirectory</c>
Rename a file on disk using System.IO.File.Move
Deletes a file using <c>System.IO.File.Delete</c>.
Call System.Environment.GetEnvironmentVariable. Raise <c>KeyNotFoundException</c> if the variable is not defined.
Returns true if a file currently exists, using System.IO.File.Exists(s).
The array of command line options. Gives the command line arguments
as returned by <c>System.Environment.GetCommandLineArgs</c>.
Sys: Basic system operations (for ML compatibility)
This module is only included to make it possible to cross-compile
code with other ML compilers. It may be deprecated and/or removed in
a future release. You may wish to use .NET functions directly instead.
UInt32: ML-like operations on 32-bit System.UInt32 numbers.
UInt64: basic operations on 64-bit System.UInt64 numbers.