diff --git a/Nu/Nu/Nu.Gaia/GaiaFunctions.fs b/Nu/Nu/Nu.Gaia/GaiaFunctions.fs index b852f449ef..d549568ce1 100644 --- a/Nu/Nu/Nu.Gaia/GaiaFunctions.fs +++ b/Nu/Nu/Nu.Gaia/GaiaFunctions.fs @@ -806,7 +806,8 @@ module Gaia = then World.exit world else world - let private attachToWorld targetDir form world = + /// Attach Gaia to the given world. + let attachToWorld targetDir form world = match World.getUserState world : obj with | :? unit -> if World.getSelectedScreen world = Simulants.EditorScreen then diff --git a/Nu/Nu/Nu.Gaia/Interactive.fsx b/Nu/Nu/Nu.Gaia/Interactive.fsx index 2e2ffb0c36..b3ec794dd7 100644 --- a/Nu/Nu/Nu.Gaia/Interactive.fsx +++ b/Nu/Nu/Nu.Gaia/Interactive.fsx @@ -8,12 +8,12 @@ #r "../../../Prime/xUnit/xunit.dll" #r "../../../Nu/FSharpx.Core/FSharpx.Core.dll" #r "../../../Nu/FSharpx.Collections/FSharpx.Collections.dll" -#r "../../../Nu/Prime/Release/Prime.exe" #r "../../../Nu/Farseer/FarseerPhysics.dll" #r "../../../Nu/Magick.NET/Magick.NET-AnyCPU.dll" #r "../../../Nu/SDL2#/Debug/SDL2#.dll" -#r "../../../Nu/TiledSharp/Release/TiledSharp.dll" +#r "../../../Nu/TiledSharp/Debug/TiledSharp.dll" #r "../../../SDL2Addendum/SDL2Addendum/SDL2Addendum/bin/Debug/SDL2Addendum.dll" +#r "../../../Prime/Prime/Prime/bin/Debug/Prime.exe" #r "../../../Nu/Nu/Nu/bin/Debug/Nu.exe" #r "../../../Nu/Nu/Nu.Gaia.Design/bin/Debug/Nu.Gaia.Design.exe" #r "../../../Nu/Nu/Nu.Gaia/bin/Debug/Nu.Gaia.exe" diff --git a/Nu/Nu/Nu/Interactive.fsx b/Nu/Nu/Nu/Interactive.fsx index d5197294b7..a06df1c866 100644 --- a/Nu/Nu/Nu/Interactive.fsx +++ b/Nu/Nu/Nu/Interactive.fsx @@ -8,12 +8,12 @@ #r "../../../Prime/xUnit/xunit.dll" #r "../../../Nu/FSharpx.Core/FSharpx.Core.dll" #r "../../../Nu/FSharpx.Collections/FSharpx.Collections.dll" -#r "../../../Nu/Prime/Release/Prime.exe" #r "../../../Nu/Farseer/FarseerPhysics.dll" #r "../../../Nu/Magick.NET/Magick.NET-AnyCPU.dll" -#r "../../../Nu/SDL2#/Release/SDL2#.dll" -#r "../../../Nu/TiledSharp/Release/TiledSharp.dll" +#r "../../../Nu/SDL2#/Debug/SDL2#.dll" +#r "../../../Nu/TiledSharp/Debug/TiledSharp.dll" #r "../../../SDL2Addendum/SDL2Addendum/SDL2Addendum/bin/Debug/SDL2Addendum.dll" +#r "../../../Prime/Prime/Prime/bin/Debug/Prime.exe" #r "../../../Nu/Nu/Nu/bin/Debug/Nu.exe" open System diff --git a/Nu/Nu/Nu/Nu.fsproj b/Nu/Nu/Nu/Nu.fsproj index 1ffc8f2e2c..33f7e8640f 100644 --- a/Nu/Nu/Nu/Nu.fsproj +++ b/Nu/Nu/Nu/Nu.fsproj @@ -84,6 +84,7 @@ + diff --git a/Nu/Nu/Nu/Program.fs b/Nu/Nu/Nu/Program.fs index 5997a8f86d..2e130ae4b7 100644 --- a/Nu/Nu/Nu/Program.fs +++ b/Nu/Nu/Nu/Program.fs @@ -20,13 +20,14 @@ module Program = system | language | editor ----------------------------------------------- - overlay | s-expr DSL | Visual Studio - asset graph | s-expr DSL | Visual Studio + overlay | s-expr DSL | Visual Studio & Gaia + asset graph | s-expr DSL | Visual Studio & Gaia simulants defs | s-expr DSL | Gaia event filtering | s-expr DSL | Gaia collision bodies| s-expr DSL | Gaia - effect system | s-expr DSL | Aether (TBA) - mind (TBA) | s-expr DSL | Pheobe (TBA) - http://www.cs.uu.nl/research/techreps/repo/CS-2013/2013-003.pdf + effect system | s-expr DSL | Gaia & Aether (TBA) + mind(TBA) | s-expr DSL | Gaia & Pheobe (TBA) - http://www.cs.uu.nl/research/techreps/repo/CS-2013/2013-003.pdf + vsrl script(WIP)| s-expr DSL | Visual Studio & Gaia interactions | F# (chains) | Visual Studio subsystems | F# | Visual Studio dispatchers | F# | Visual Studio diff --git a/Nu/Nu/Nu/Reflection.fs b/Nu/Nu/Nu/Reflection.fs index ae11e7809c..814b013db7 100644 --- a/Nu/Nu/Nu/Reflection.fs +++ b/Nu/Nu/Nu/Reflection.fs @@ -15,11 +15,8 @@ type [] PropertyExpr = | DefineExpr of obj | VariableExpr of (unit -> obj) -[] -module PropertyExpr = - /// Evaluate a property expression. - let eval expr = + static member eval expr = match expr with | DefineExpr value -> value | VariableExpr fn -> fn () @@ -30,11 +27,8 @@ type [] PropertyDefinition = PropertyType : Type PropertyExpr : PropertyExpr } -[] -module PropertyDefinition = - /// Validate a property definition. - let validate propertyDefinition = + static member validate propertyDefinition = if propertyDefinition.PropertyName = "FacetNames" then failwith "FacetNames cannot be an intrinsic property." if propertyDefinition.PropertyName = "OptOverlayName" then failwith "OptOverlayName cannot be an intrinsic property." if Array.exists (fun gta -> gta = typeof) propertyDefinition.PropertyType.GenericTypeArguments then @@ -43,13 +37,13 @@ module PropertyDefinition = "Use explicit typing on all values that carry incomplete type information such as empty lists, empty sets, and none options." /// Make a property definition. - let make propertyName propertyType propertyExpr = + static member make propertyName propertyType propertyExpr = { PropertyName = propertyName; PropertyType = propertyType; PropertyExpr = propertyExpr } /// Make a property definition, validating it in the process. - let makeValidated propertyName propertyType propertyExpr = - let result = make propertyName propertyType propertyExpr - validate result + static member makeValidated propertyName propertyType propertyExpr = + let result = PropertyDefinition.make propertyName propertyType propertyExpr + PropertyDefinition.validate result result /// In tandem with the define literal, grants a nice syntax to define value properties. diff --git a/Nu/Nu/Nu/WorldEvents.fs b/Nu/Nu/Nu/WorldEvents.fs new file mode 100644 index 0000000000..3cae0a65ef --- /dev/null +++ b/Nu/Nu/Nu/WorldEvents.fs @@ -0,0 +1,101 @@ +// Nu Game Engine. +// Copyright (C) Bryan Edds, 2012-2016. + +namespace Nu +open System +open OpenTK +open Prime +open Nu + +/// The data for a mouse move event. +type [] MouseMoveData = + { Position : Vector2 } + +/// The data for a mouse button event. +type [] MouseButtonData = + { Position : Vector2 + Button : MouseButton + Down : bool } + +/// The data for a keyboard key event. +type [] KeyboardKeyData = + { ScanCode : int + Repeated : bool + Down : bool } + +/// The data for a collision event. +type [] CollisionData = + { Normal : Vector2 + Speed : single + Collidee : Entity } + +[] +module Events = + + let Any = Prime.Events.Any + let Subscribe = ntoa !!"Subscribe" + let Unsubscribe = ntoa !!"Unsubscribe" + let Update = ntoa !!"Update" + let Select = ntoa !!"Select" + let Deselect = ntoa !!"Deselect" + let Down = ntoa !!"Down" + let Up = ntoa !!"Up" + let Click = ntoa !!"Click" + let On = ntoa !!"On" + let Off = ntoa !!"Off" + let Touch = ntoa !!"Touch" + let Untouch = ntoa !!"Untouch" + let Mouse = ntoa !!"Mouse" + let MouseMove = Mouse -<- ntoa !!"Move" + let MouseDrag = Mouse -<- ntoa !!"Drag" + let MouseLeft = Mouse -<- ntoa !!"Left" + let MouseCenter = Mouse -<- ntoa !!"Center" + let MouseRight = Mouse -<- ntoa !!"Right" + let MouseX1 = Mouse -<- ntoa !!"X1" + let MouseX2 = Mouse -<- ntoa !!"X2" + let MouseLeftDown = MouseLeft -|- ntoa !!"Down" + let MouseLeftUp = MouseLeft -|- ntoa !!"Up" + let MouseLeftChange = MouseLeft -|- ntoa !!"Change" + let MouseCenterDown = MouseCenter -|- ntoa !!"Down" + let MouseCenterUp = MouseCenter -|- ntoa !!"Up" + let MouseCenterChange = MouseCenter -|- ntoa !!"Change" + let MouseRightDown = MouseRight -|- ntoa !!"Down" + let MouseRightUp = MouseRight -|- ntoa !!"Up" + let MouseRightChange = MouseRight -|- ntoa !!"Change" + let MouseX1Down = MouseX1 -|- ntoa !!"Down" + let MouseX1Up = MouseX1 -|- ntoa !!"Up" + let MouseX1Change = MouseX1 -|- ntoa !!"Change" + let MouseX2Down = MouseX2 -|- ntoa !!"Down" + let MouseX2Up = MouseX2 -|- ntoa !!"Up" + let MouseX2Change = MouseX2 -|- ntoa !!"Change" + let KeyboardKey = ntoa !!"KeyboardKey" + let KeyboardKeyDown = Mouse -<- ntoa !!"Down" + let KeyboardKeyUp = Mouse -<- ntoa !!"Up" + let KeyboardKeyChange = Mouse -<- ntoa !!"Change" + let Collision = ntoa !!"Collision" + let Incoming = ntoa !!"Incoming" + let IncomingStart = Incoming -|- ntoa !!"Start" + let IncomingFinish = Incoming -|- ntoa !!"Finish" + let Outgoing = ntoa !!"Outgoing" + let OutgoingStart = Outgoing -|- ntoa !!"Start" + let OutgoingFinish = Outgoing -|- ntoa !!"Finish" + let Assets = ntoa !!"Assets" + let AssetsReload = Assets -<- ntoa !!"Reload" + let Ambient = ntoa !!"Ambient" + let AmbientChange = Ambient -<- ntoa !!"Change" + let AmbientChangeProperty = fun propertyName -> Ambient -<- ltoa [!!"Change"; !!propertyName] + let Game = ntoa !!"Game" + let GameChange = Game -<- ntoa> !!"Change" + let Screen = ntoa !!"Screen" + let ScreenAdd = Screen -<- ntoa !!"Add" + let ScreenRemoving = Screen -<- ntoa !!"Removing" + let ScreenChange = Screen -<- ntoa> !!"Change" + let Group = ntoa !!"Group" + let GroupAdd = Group -<- ntoa !!"Add" + let GroupRemoving = Group -<- ntoa !!"Removing" + let GroupChange = Group -<- ntoa> !!"Change" + let Entity = ntoa !!"Entity" + let EntityAdd = Entity -<- ntoa !!"Add" + let EntityRemoving = Entity -<- ntoa !!"Removing" + let EntityChange = Entity -<- ntoa> !!"Change" + let EntityChangeProperty = fun propertyName -> Entity -<- ltoa> [!!"Change"; !!propertyName] \ No newline at end of file diff --git a/Nu/Nu/Nu/WorldScripting.fs b/Nu/Nu/Nu/WorldScripting.fs index 26c1ca0ea8..216bcbff14 100644 --- a/Nu/Nu/Nu/WorldScripting.fs +++ b/Nu/Nu/Nu/WorldScripting.fs @@ -258,4 +258,4 @@ module Scripting = type [] ScriptSystem = private { Scripts : Vmap - Debugging : bool } + Debugging : bool } \ No newline at end of file diff --git a/Nu/Nu/Nu/WorldTypes2.fs b/Nu/Nu/Nu/WorldTypes2.fs index c7ee4b26e8..aeeba30fa3 100644 --- a/Nu/Nu/Nu/WorldTypes2.fs +++ b/Nu/Nu/Nu/WorldTypes2.fs @@ -6,28 +6,41 @@ open System open OpenTK open Prime open Nu + +/// Provides a way to make user-defined dispatchers, facets, and various other sorts of game- +/// specific values. +type NuPlugin () = + + /// Make user-defined subsystems such that Nu can utilitze them at run-time. + abstract MakeSubsystems : unit -> (string * World Subsystem) list + default this.MakeSubsystems () = [] + + /// Optionally make a user-defined game dispatchers such that Nu can utilize it at run-time. + abstract MakeOptGameDispatcher : unit -> GameDispatcher option + default this.MakeOptGameDispatcher () = None + + /// Make user-defined screen dispatchers such that Nu can utilize them at run-time. + abstract MakeScreenDispatchers : unit -> ScreenDispatcher list + default this.MakeScreenDispatchers () = [] + + /// Make user-defined group dispatchers such that Nu can utilize them at run-time. + abstract MakeGroupDispatchers : unit -> GroupDispatcher list + default this.MakeGroupDispatchers () = [] + + /// Make user-defined entity dispatchers such that Nu can utilize them at run-time. + abstract MakeEntityDispatchers : unit -> EntityDispatcher list + default this.MakeEntityDispatchers () = [] + + /// Make user-defined assets such that Nu can utilize them at run-time. + abstract MakeFacets : unit -> Facet list + default this.MakeFacets () = [] -/// The data for a mouse move event. -type [] MouseMoveData = - { Position : Vector2 } - -/// The data for a mouse button event. -type [] MouseButtonData = - { Position : Vector2 - Button : MouseButton - Down : bool } - -/// The data for a keyboard key event. -type [] KeyboardKeyData = - { ScanCode : int - Repeated : bool - Down : bool } - -/// The data for a collision event. -type [] CollisionData = - { Normal : Vector2 - Speed : single - Collidee : Entity } + /// Make the overlay routes that will allow Nu to use different overlays for the specified + /// types. For example, a returned router of (typeof.Name, Some "CustomButtonOverlay") + /// will cause all buttons to use the overlay with the name "CustomButtonOverlay" rather + /// than the default "ButtonDispatcher" overlay. + abstract MakeOverlayRoutes : unit -> (string * string option) list + default this.MakeOverlayRoutes () = [] /// Describes an entity value independent of the engine. type [] EntityDescriptor = @@ -75,112 +88,6 @@ type [] GameDescriptor = GameProperties = Map.empty Screens = [] } -/// Provides a way to make user-defined dispatchers, facets, and various other sorts of game- -/// specific values. -type NuPlugin () = - - /// Make user-defined subsystems such that Nu can utilitze them at run-time. - abstract MakeSubsystems : unit -> (string * World Subsystem) list - default this.MakeSubsystems () = [] - - /// Optionally make a user-defined game dispatchers such that Nu can utililize it at run-time. - abstract MakeOptGameDispatcher : unit -> GameDispatcher option - default this.MakeOptGameDispatcher () = None - - /// Make user-defined screen dispatchers such that Nu can utililize them at run-time. - abstract MakeScreenDispatchers : unit -> ScreenDispatcher list - default this.MakeScreenDispatchers () = [] - - /// Make user-defined group dispatchers such that Nu can utililize them at run-time. - abstract MakeGroupDispatchers : unit -> GroupDispatcher list - default this.MakeGroupDispatchers () = [] - - /// Make user-defined entity dispatchers such that Nu can utililize them at run-time. - abstract MakeEntityDispatchers : unit -> EntityDispatcher list - default this.MakeEntityDispatchers () = [] - - /// Make user-defined assets such that Nu can utililize them at run-time. - abstract MakeFacets : unit -> Facet list - default this.MakeFacets () = [] - - /// Make the overlay routes that will allow Nu to use different overlays for the specified - /// types. For example, a returned router of (typeof.Name, Some "CustomButtonOverlay") - /// will cause all buttons to use the overlay with the name "CustomButtonOverlay" rather - /// than the default "ButtonDispatcher" overlay. - abstract MakeOverlayRoutes : unit -> (string * string option) list - default this.MakeOverlayRoutes () = [] - -[] -module Events = - - let Any = Prime.Events.Any - let Subscribe = ntoa !!"Subscribe" - let Unsubscribe = ntoa !!"Unsubscribe" - let Update = ntoa !!"Update" - let Select = ntoa !!"Select" - let Deselect = ntoa !!"Deselect" - let Down = ntoa !!"Down" - let Up = ntoa !!"Up" - let Click = ntoa !!"Click" - let On = ntoa !!"On" - let Off = ntoa !!"Off" - let Touch = ntoa !!"Touch" - let Untouch = ntoa !!"Untouch" - let Mouse = ntoa !!"Mouse" - let MouseMove = Mouse -<- ntoa !!"Move" - let MouseDrag = Mouse -<- ntoa !!"Drag" - let MouseLeft = Mouse -<- ntoa !!"Left" - let MouseCenter = Mouse -<- ntoa !!"Center" - let MouseRight = Mouse -<- ntoa !!"Right" - let MouseX1 = Mouse -<- ntoa !!"X1" - let MouseX2 = Mouse -<- ntoa !!"X2" - let MouseLeftDown = MouseLeft -|- ntoa !!"Down" - let MouseLeftUp = MouseLeft -|- ntoa !!"Up" - let MouseLeftChange = MouseLeft -|- ntoa !!"Change" - let MouseCenterDown = MouseCenter -|- ntoa !!"Down" - let MouseCenterUp = MouseCenter -|- ntoa !!"Up" - let MouseCenterChange = MouseCenter -|- ntoa !!"Change" - let MouseRightDown = MouseRight -|- ntoa !!"Down" - let MouseRightUp = MouseRight -|- ntoa !!"Up" - let MouseRightChange = MouseRight -|- ntoa !!"Change" - let MouseX1Down = MouseX1 -|- ntoa !!"Down" - let MouseX1Up = MouseX1 -|- ntoa !!"Up" - let MouseX1Change = MouseX1 -|- ntoa !!"Change" - let MouseX2Down = MouseX2 -|- ntoa !!"Down" - let MouseX2Up = MouseX2 -|- ntoa !!"Up" - let MouseX2Change = MouseX2 -|- ntoa !!"Change" - let KeyboardKey = ntoa !!"KeyboardKey" - let KeyboardKeyDown = Mouse -<- ntoa !!"Down" - let KeyboardKeyUp = Mouse -<- ntoa !!"Up" - let KeyboardKeyChange = Mouse -<- ntoa !!"Change" - let Collision = ntoa !!"Collision" - let Incoming = ntoa !!"Incoming" - let IncomingStart = Incoming -|- ntoa !!"Start" - let IncomingFinish = Incoming -|- ntoa !!"Finish" - let Outgoing = ntoa !!"Outgoing" - let OutgoingStart = Outgoing -|- ntoa !!"Start" - let OutgoingFinish = Outgoing -|- ntoa !!"Finish" - let Assets = ntoa !!"Assets" - let AssetsReload = Assets -<- ntoa !!"Reload" - let Ambient = ntoa !!"Ambient" - let AmbientChange = Ambient -<- ntoa !!"Change" - let AmbientChangeProperty = fun propertyName -> Ambient -<- ltoa [!!"Change"; !!propertyName] - let Game = ntoa !!"Game" - let GameChange = Game -<- ntoa> !!"Change" - let Screen = ntoa !!"Screen" - let ScreenAdd = Screen -<- ntoa !!"Add" - let ScreenRemoving = Screen -<- ntoa !!"Removing" - let ScreenChange = Screen -<- ntoa> !!"Change" - let Group = ntoa !!"Group" - let GroupAdd = Group -<- ntoa !!"Add" - let GroupRemoving = Group -<- ntoa !!"Removing" - let GroupChange = Group -<- ntoa> !!"Change" - let Entity = ntoa !!"Entity" - let EntityAdd = Entity -<- ntoa !!"Add" - let EntityRemoving = Entity -<- ntoa !!"Removing" - let EntityChange = Entity -<- ntoa> !!"Change" - let EntityChangeProperty = fun propertyName -> Entity -<- ltoa> [!!"Change"; !!propertyName] - [] module SimulantOperators = diff --git a/Nu/Prime/Debug/Prime.XML b/Nu/Prime/Debug/Prime.XML deleted file mode 100644 index 6e7a10805e..0000000000 --- a/Nu/Prime/Debug/Prime.XML +++ /dev/null @@ -1,2751 +0,0 @@ - - -Prime - - - - Try to find an index in reverse. - - - - - Hash a list. - NOTE: May be a pessimization. - - - - - Compare a list of strings lexicographically. - - - - - Stack a list from the left, starting with the empty list. - Example - [0, 1, 2] becomes [[]; [0]; [0; 1]; [0; 1; 2]] - - - - - Remove all elements from a list that satisfy a predicate. - - - - - Implement a fold while folder results in Some. - - - - - Convert a list to a HashSet. - - - - - Convert a list of values to a Dictionary. - - - - - Convert a list of pairs to a Dictionary. - - - - - Add a list of values to a Dictionary. - - - - - Add a list of pairs to a Dictionary. - - - - - Get the set interesection of two lists. - - - - - Query that the first list a superset of the second list. - - - - - Query that the first list a subset of the second list. - - - - - Runs a binary set operation on two lists that are converted to sets. - - - - - Take elements until an element satisfies a predicate, taking also that element. - - - - - Join a list of lists into a list separated by sep. - - - - - Join a list into a string separated by sep. - TODO: consider optimizing with a StringBuilder. - - - - - Join a list into a string separated by sep. - - - - - Pad a list with instances of its last item so that it is proportion to another list. - - - - - Pad a list with count instances of its last item. - - - - - Pad a list with count instances of its last item, removing items from back if count is negative. - - - - - Make a transformed list of options an all or nothing proposition. - TODO: optimize with program fusion. - - - - - Make a list of options an all or nothing proposition. - TODO: optimize with program fusion. - - - - - Convert option values to definite values. - - - - - Get all but the last item from a list. - - - - - Foldi for lists. - - - - - Fornone for lists. - - - - - Replace a list's head. - - - - - Project the first list onto the second. - - - - - A more tolerant and open-minded take. - - - - - Zip two lists by a function. - TODO: optimize with program fusion. - - - - - Threads a computation state through the adjacent members of a list. - - - - - For all 2 that indicates uneven lists by returning false rather than raising. - - - - - Try to find a value at index n. - - - - - Try to find a value. - - - - - Query that two lists are of the same length. - - - - - Query that a list has at least n elements. - - - - - Query that a list has exactly n elements. - - - - - Query that a list has at most n elements. - - - - - Query that a list has at least n elements. - - - - - Partition a list. - - - - - Check that a predicate passes for NO items in a list. - - - - - Cons with flipped arguments. - - - - - The missing cons function. - - - - - Converts Address types. - - - - - Describes an event subscription that can be boxed / unboxed. - - - - - Monadic return for the chain monad. - - - - - Monadic bind for the chain monad. - - - - - Implements the chain monad. - - - - - The Chain monad. Allows the user to define a chain of operations over the world that - optionally spans across a bounded number of events. - - The following is a potentially tail-recursible representation as speculated by @tpetracek - - 'w -> ('w * Either<'e -> Chain<'e, 'a, 'w>, 'a> -> 'a) -> 'a - - - - - Haskell-style Either type. - - - - - An event used by the event system. - - - - - Adds the capability to use purely-functional events with the given program type 'w. - - - - - Describes whether an in-flight event has been resolved or should cascade to down-stream handlers. - - - - - A hash-key-value triple, implemented with a struct for efficiency. - - - - - Along with the Label binding, is used to elaborate the name of a target without using a - string literal. - - - - - Specifies whether an event-based application is running or exiting. - - - - - Converts Name types. - - - - - An observation in the functional reactive style. - - - - - A participant in the event system. - - - - - The data for a change in a participant. - - - - - Concatenate two addresses, takings the type of first address. - - - - - Concatenate two addresses, forcing the type of first address. - - - - - Operators for the Participant type. - - - - - Converts Relation types. - - - - - Effectively new-types the Regex type to implement custom type-conversation without needing - explicit initialization by the client program. - - - - - Converts Rexpr types. - - - - - A map of event subscriptions. - - - - - An entry in the subscription map. - - - - - Abstracts over a subscription sorting procedure. - - - - - Describes an event subscription. - - - - - Compresses two unions into a single union in a symbolic-expression. - - - - - A map of subscription keys to unsubscription data. - - - - - The Vsync computation expression builder. - - - - - An attribute to specify the default value of an XProperty. - - - - - A map of XProperties. - - - - - An Xtension property. - - - - - Describes an XProperty. - - - - - Concatenate two addresses, taking the type of the second address. - - - - - Concatenate two addresses, forcing the type of second address. - - - - - Concatenate two addresses, taking the type of first address. - - - - - Concatenate two addresses, forcing the type of first address. - - - - - Concatenate two addresses of the same type. - - - - - Convert a single name into an address. - - - - - Make an address from a '/' delimited string. - NOTE: do not move this function as the AddressConverter's reflection code relies on it being exactly here! - - - - - Convert a names list into an address. - - - - - Hash an Address. - - - - - Convert a full name into an address. - - - - - Equate Addresses. - - - - - Compare Addresses. - - - - - Convert any address to an obj Address. - - - - - Convert an address of type 'a to an address of type 'b. - - - - - Concatenate two addresses, forcing the type of second address. - - - - - Concatenate two addresses, taking the type of the second address. - - - - - Concatenate two addresses, forcing the type of first address. - - - - - Concatenate two addresses, taking the type of first address. - - - - - Concatenate two addresses of the same type. - - - - - Specifies the address of an identifiable value. - - - - - Query that an address is devoid of names. - - - - - Get the length of an address by its names. - - - - - Take an address composed of all but the last name of an address. - - - - - Take the last name of an address. - - - - - Take an address composed of the given number of names of an address. - - - - - Take an address composed of the name of an address minus a skipped amount of names. - - - - - Take a name of an address. - - - - - Take the tail of an address. - - - - - Take the head of an address. - - - - - Get the address's hash code. - - - - - Get the name of an address. - - - - - Get the full name of an address. - - - - - Change the type of an address. - - - - - Get the names of an address. - - - - - Make an address from a '/' delimited string. - - - - - Make an address from names. - - - - - The empty address. - - - - - Concatenate two addresses, forcing the type of second address. - - - - - Concatenate two addresses, taking the type of the second address. - - - - - Concatenate two addresses, forcing the type of first address. - - - - - Concatenate two addresses, taking the type of first address. - - - - - Concatenate two addresses of the same type. - - - - - Convert any address to an obj Address. - - - - - Convert a single name into an address. - - - - - Convert a full name into an address. - - - - - Convert a names list into an address. - - - - - Convert an address of type 'a to an address of type 'b. - - - - - Creates an asynchronous operation that runs 'f' over computation of 'a'. - - - - - Async is missing a couple of functions, as we know... - - - - - Run a chain over Nu's event system. - Allows each chainhronized operation to run without referencing its source event, and - without specifying its event handling approach by assuming Resolve. - - - - - Run a chain over Nu's event system. - Allows each chainhronized operation to run without referencing its source event, and - without specifying its event handling approach by assuming Cascade. - - - - - Run a chain to its end, providing unit for all its steps. - - - - - Run a chain to its end, providing unit for all its steps. - - - - - Run a chain to its end, providing 'e' for all its steps. - - - - - Advance a chain value by one step, providing 'e'. - - - - - Step once into a chain. - - - - - Loop in a chain context while 'pred' evaluates to true. - - - - - Loop in a chain context while 'pred' evaluate to true. - - - - - React to the next event, discarding the event's value. - - - - - React to the next event, using the event's value in the reaction. - - - - - Pass over the next event. - - - - - Get the next event. - - - - - Update the world. - - - - - Update the world with an additional transformed world parameter. - - - - - Set the world. - - - - - Get the world transformed by 'by'. - - - - - Get the world. - - - - - Monadic bind for the chain monad. - - - - - Monadic return for the chain monad. - - - - - Builds the chain monad. - - - - - Like dict, but returns a concrete Dictionary instance with structural hashing. - - - - - Try to find a value in a dictonary. - - - - - Map over a dictionary. A new dictionary is produced. - - - - - Make a dictionary with a single element. - - - - - Add all the elements of another dictionary. - - - - - Add multiple kvps to a dictionary. - - - - - Check value equality of dictionary. - NOTE: be wary the highly imperative nature of this code. - - - - - Force the addition of an element, removing the existing one if necessary. - - - - - Try to add an element, returning false upon failure. - - - - - Builds an either monad. - - - - - Split a sequences of Either values into a pair of left and right value lists. - - - - - Map over the right side of an Either value. - - - - - Map over the left side of an Either value. - - - - - Get only the Right values of a sequence of an Either value. - - - - - Get only the Left values of a sequence of an Either value. - - - - - Get the Right value of an Either value, failing if not available. - - - - - Get the Left value of an Either value, failing if not available. - - - - - Query whether an Either value is a Right value. - - - - - Query whether an Either value is a Left value. - - - - - The computation expression builder for Either. - - - - - Monadic 'return from' for Either. - - - - - Monadic return for Either. - - - - - Monadic bind for Either. - - - - - Describes how events are filtered. - - - - - Filter events. - - - - - Describes how events are filtered. - - - - - A publisher-neutral, purely functional event system. - - - - - Make an event system. - - - - - Log an event. - - - - - Set the state of the event filter. - - - - - Get the state of the event filter. - - - - - Set whether events are being traced. - - - - - Get whether events are being traced. - - - - - Get event state. - - - - - Set unsubscriptions. - - - - - Set subscriptions. - - - - - Get unsubscriptions. - - - - - Get subscriptions. - - - - - Remove event state. - - - - - Add event state. - - - - - Keep active a subscription for the lifetime of a participant. - - - - - Keep active a subscription for the lifetime of a participant, and be provided with an unsubscription callback. - - - - - Subscribe to an event. - - - - - Subscribe to an event using the given subscriptionKey. - - - - - Subscribe to an event, and be provided with an unsubscription callback. - - - - - Subscribe to an event using the given subscriptionKey, and be provided with an unsubscription callback. - - - - - Unsubscribe from an event. - - - - - Publish an event with no subscription sorting. - - - - - Publish an event, using the given publishSorter procedure to arrange the order to which subscriptions are published. - - - - - Publish an event, using the given getSubscriptions and publishSorter procedures to arrange the order to which subscriptions are published. - - - - - A 'no-op' for subscription sorting - that is, performs no sorting at all. - - - - - Sort subscriptions using categorization via the 'by' procedure. - - - - - Set the state of the event filter. - - - - - Get the state of the event filter. - - - - - Set whether events are being traced. - - - - - Get whether events are being traced. - - - - - Get event state from the world. - - - - - Remove event state from the world. - - - - - Add event state to the world. - - - - - Set event unsubscriptions. - - - - - Set event subscriptions. - - - - - Get event unsubscriptions. - - - - - Get event subscriptions. - - - - - Update the event system in the world. - - - - - Get the event system as tranformed via 'by'. - - - - - Get the event system. - - - - - Represents any event. - - - - - Generic (and sectioned) division. - - - - - Generic (and sectioned) multiplication. - - - - - Generic (and sectioned) subtraction. - - - - - Generic (and sectioned) addition. - - - - - Generic (and sectioned) decrement. - - - - - Generic (and sectioned) increment. - - - - - The generic monoidal append operation. - - - - - The generic monoidal empty value. - - - - - The generic one value. - - - - - The generic zero value. - - - - - Make a hash set with a single element. - - - - - Force the addition of an element, removing the existing one if necessary. - - - - - Presents a purely-functional interface to a cached value. - Works by associating a cached value with a given cache key such that the cached value remains valid when queried - for using the same cache key (as decided by a simple key comparer function), automatically rebuilding the cached - value and key (as done with a simple factory function). - - - - Make a keyed cache value. - The current key against which to validate the cache. - The value associated with the cache key. - - - Get the cached value. - Determines the equality of the key used to consider if the cache is valid. - Generates a fresh key and corresponding value to cache. - The current key against which to validate the cache. - The keyed cache. - - - - The number of cache misses that have occured when using this type. - Useful for performance trouble-shooting in Debug mode. - - - - - The number of cache hits that have occured when using this type. - Useful for performance trouble-shooting in Debug mode. - - - - - Label for module names. - Needed since we can't utter something like typeof<MyModule>. - - - - - Along with the LabelName type, is used to elaborate the name of a target without - using a string literal. - - Usage: - let fieldName = Label?MyFieldName - - - - - Initialize logging. - - - - - Conditional trace message call where condition is eagerly evaluted. - - - - - Log a trace message using Trace.Fail and call to info. - - - - - Conditional debug message call where condition is lazily evaluated. - - - - - Log a debug message with Debug.Fail and call to info. - - - - - Log a purely informational message using Trace.WriteLine. - - - - - Log a remark with a custom header using Trace.WriteLine. - - - - - Combine the contents of two maps, taking an item from the second map in the case of a key - conflict. - - - - - Convert any map value to an obj. - - - - - Convert a list of a map's values by a function. - - - - - Get a list of a map's values. - - - - - Convert a list of a map's keys by a function. - - - - - Get a list of a map's keys. - - - - - Convert a map to a list by a function. - TODO: Optimize by program fusion. - - - - - Make a map from a list by a function. - TODO: Optimize by program fusion. - - - - - Convert a seq of a map's values by a function. - - - - - Get a seq of a map's values. - - - - - Convert a seq of a map's keys by a function. - - - - - Get a seq of a map's keys. - - - - - Convert a map to a seq by a function. - TODO: Optimize by program fusion. - - - - - Make a map from a seq by a function. - TODO: Optimize by program fusion. - - - - - Add multiple values to a map. - - - - - Make a singleton map. - - - - - Combine the contents of two maps, taking an item from the second map in case of a key overlap. - - - - - Presents a purely-functional interface to a mutable object / record / whatever. - If it is not satisfactorily efficient to run a clone operation on the mutant for every get, - just pass in the id function for make's cloneMutant arg, but make sure to NEVER mutate the - returned mutant! - - - - Make a mutant cache. - - A function to clone the mutant before presenting it to the outside world. - Feel free to pass id if you can ensure that the presented mutant will never be mutated externally. - - The mutant (mutable object / record / whatever) to be cached. - - - Mutate the underlying mutant (mutable object / record / whatever). - A function that rebuilds the mutant from scratch in case the current underlying mutant is out of date. - A function that mutates the underlying mutant. - The mutant cache. - - - Get the underlying mutant (mutable object / record / whatever). - A function that rebuilds the mutant from scratch in case the current underlying mutant is out of date. - The mutant cache. - - - - The number of mutant rebuilds that have occured when using this type. - Useful for performance trouble-shooting in Debug mode. - - - - - Make a name from a non-empty string without whitespace. - - - - - Equate Names. - - - - - Compare Names. - - - - - A name for optimized keying in hashing containers. - - - - - The empty name, consisting of an empty string. - - - - - Hash a list of names. - - - - - Compare a list of names lexicographically. - - - - - Query for equality a list of names lexicographically. - - - - - Split a name on a separator char array. - - - - - Join a list of names by a separator string. - - - - - Get the name of a name key. - - - - - Convert a name string to a name. - - - - - Filter out participant change events that do not relate to those returned by 'valueGetter'. - - - - - Filter out the events with non-unique data from an observation. - - - - - Filter out the events with non-unique data as defined by 'by' from an observation. - - - - - Transform an observation into a running minimum of it numeric data. - - - - - Transform an observation into a running maximum of it numeric data. - - - - - Filter out the None data values from an observation and strip the Some constructor from - the remaining values. - - - - - Take only the first event from an observation that satisfies 'p'. - - - - - Take only the nth event from an observation. - - - - - Skip the first event of an observation. - - - - - Take only the first event from an observation. - - - - - Skip the first n events in an observation. - - - - - Take only the first n events from an observation. - - - - - Transform an observation by duplicating its data into pairs. - - - - - Transform an observation of pairs by a mapping of its snd values. - - - - - Transform an observation's pairs by a mapping of its fst values. - - - - - Transform an observation of pairs into its snd values. - - - - - Transform an observation of pairs into its fst values. - - - - - Transform an observation into a running product of its data. - - - - - Transform an observation into a running sum of its data. - - - - - Transform an observation into a running set of its event's unique data. - - - - - Transform an observation into a running set of its event's unique data as defined by 'by'. - - - - - Transform an observation into a running map from its event's data to keys as defined by 'f'. - - - - - Transform an observation into a running average of its event's numeric data. - - - - - Scan over an observation, accumulating state. - - - - - Scan over an observation, accumulating state. - - - - - Scan over an observation, accumulating state. - - - - - Subscribe to an observation until the observer is removed from the world. - - - - - Subscribe to an observation until the observer is removed from the world, - returning both an unsubscription procedure as well as the world as augmented with said - subscription. - - - - - Terminate an observation when the observer is removed from the world. - - - - - Terminate an observation when an event at the given address is raised. - - - - - Subscribe to an observation, handling each event with the given 'handleEvent' procedure. - - - - - Subscribe to an observation, handling each event with the given 'handleEvent' procedure, - returning both an unsubscription procedure as well as the world as augmented with said - subscription. - - - - - TODO: document! - - - - - TODO: document! - - - - - TODO: document! - - - - - Map an observation by the given 'mapper' procedure. - - - - - Filter an observation by the given 'pred' procedure. - - - - - Combine an observation with the events from the given address. Combination is in 'sum - form', which is defined as an Either of the data of the combined events, where only data - from the most recent event is available at a time. - TODO: unit test for this! - - - - - Combine an observation with the events from the given address. Combination is in 'product - form', which is defined as a pair of the data of the combined events. Think of it as 'zip' - for event streams. - TODO: unit test for this! - - - - - Make an observation of an event at the given address. - - - - - Propagate the event data of an observation to a value in the observing participant when the - observer exists (doing nothing otherwise). - - - - - Make an observation of the observer's change events. - - - - - Pipe-right arrow that provides special precedence for observations. - - - - - Test just the value parts of a type for equality. Reflective and slow. - - - - - Test for equality, usually faster than (=). - - - - - Sequences two functions like Haskell ($). - - - - - As close as we can get to F# implicits. - - - - - Fail with an unexpected match failure. - - - - - Make a Guid from a couple of ints. - It is the user's responsibility to ensure uniqueness when using the resulting Guids. - - - - - Make a Guid. - - - - - Get the enumerator for a sequence. - - - - - Short-hand for linq enumerable cast. - - - - - Add a custom TypeConverter to an existing type. - - - - - Perform an operation until a predicate passes. - - - - - Apply a function recursively a number of times. - - - - - Test just the value parts of a type for equality. - NOTE: This function uses mad reflection, so is extremely slow, and should not be used in tight loops. - - - - - Test for reference equality. - - - - - Test for equality, usually faster than (=). - - - - - Get the value of a property. - - - - - Get the properties of a type. - - - - - Get the value of a field. - - - - - Get the fields of a type. - - - - - Get the .NET type name of a target. - - - - - Get the .NET type of a target. - - - - - Compare two strings. - - - - - Test for string equality. - - - - - Convert a nullable value into an option. - - - - - Test that the given type has null as an actual value. - - - - - Test for non-null. - - - - - Test for null. - - - - - Transforms a function by flipping the order of its arguments. - - - - - Transforms a function by flipping the order of its arguments. - - - - - Transforms a function by flipping the order of its arguments. - - - - - Uncurry two values. - - - - - Curry up two values. - - - - - Convert any value to an obj. - - - - - The absurdity function with two arguments. - No matter what you pass it, it evaluates to false. - - - - - The absurdity function. - No matter what you pass it, it evaluates to false. - - - - - The tautology function with three arguments. - No matter what you pass it, it evaluates to true. - - - - - The tautology function with two arguments. - No matter what you pass it, it evaluates to true. - - - - - The tautology function. - No matter what you pass it, it evaluates to true. - - - - - Get an option's value, or missing that, return a default value. - - - - - Join an option option. - - - - - Sort pairs by fst in descending order. - - - - - Make a pair. - - - - - Map over pair member snd. - - - - - Map over pair member fst. - - - - - Replace pair member snd. - - - - - Replace pair member fst. - - - - - Performs some ad-hoc tests to compare performance of maps. - - - - - An immutable random number generator using the xorshift* algorithm. - - - - - Make a rand value generator from the default seed state. - - - - - Make a rand value generator from the given int seed state. - May not be zero. - - - - - Make a rand value generator from the given seed state. - May not be zero. - - - - - Get the next random value below the given maximum as an int64 type. - - - - - Get the next random value as an int64 type. - NOTE: System.Random.Next will never return Int64.MaxValue, but this will. - - - - - Get the next random value below the given maximum as an int type. - - - - - Get the next random value as an int type. - NOTE: System.Random.Next will never return Int32.MaxValue, but this will. - - - - - Get the next random value below the given maximum as a single type. - - - - - Get the next random value as a double type. - - - - - Get the next random value below the given maximum as a double type. - - - - - Get the next random value as a double type. - - - - - The internal state of rand, useful for serialization and duplication. - - - - - Advance the state of rand, thus yielding a new outcome. - - - - - The default seed state for rand. - NOTE: number generated via http://www.random.org/bytes/ - - - - - Get the sample value used to generate the current random value. - - - - - Make a relation from a '/' delimited string where '.' are empty. - NOTE: do not move this function as the RelationConverter's reflection code relies on it being exactly here! - - - - - Hash a Relation. - - - - - Equate Relations. - - - - - A relation that can be resolved to an address via projection. - - - - - Make an address from a '/' delimited string. - - - - - Make a relation from a list of option names. - - - - - Resolve a relationship to an address. - - - - - Expand escaped characters in a string. - - - - - Contract escaped characters in a string. - - - - - Surround a string with another surrounding string. - - - - - Convert a string to an array of characters. - TODO: optimize this. - - - - - Get the string with the given ending. - - - - - Textualize a string for usage as text. - - - - - Converts a list of characters into a string. - - - - - Converts a string into a list of characters. - - - - - Pretty-print a symbol string in the form an symbolic-expression. - - - - - Cascade a symbol string into multiple lines with proper tabbing. - - - - - Attempt to a symbol index from a string. - - - - - Try to get the Origin of the symbol if it has one. - - - - - Convert a symbol to a string, with the following unparses: - - (* Atom values *) - None - CharacterAnimationFacing - - (* Number values *) - 0 - -5 - - (* String value *) - "String with quoted spaces." - - (* Quoted value *) - `[Some 1]' - - (* Symbols values *) - [] - [Some 0] - [Left 0] - [[0 1] [2 4]] - [AnimationData 4 8] - [Gem `[Some 1]'] - - ...and so on. - - - - - Convert a string to a symbol, with the following parses: - - (* Atom values *) - None - CharacterAnimationFacing - - (* Number values *) - 0 - -5 - - (* String value *) - "String with quoted spaces." - - (* Quoted value *) - `[Some 1]' - - (* Symbols values *) - [] - [Some 0] - [Left 0] - [[0 1] [2 4]] - [AnimationData 4 8] - [Gem `[Some 1]'] - - ...and so on. - - - - - Convert a value from given type using its assigned type converter. - - - - - Convert a value to the given type using its assigned type converter. - - - - - Query that a value of the destination type can be converted from the source type. - - - - - Query that a value of the source type can be converted to the destination type. - - - - - Uses a symbolic converter to convert a string to a value. - - - - - Uses a symbolic converter to convert a value to a string. - - - - - Convert a symbol to a value. - - - - - Convert a value to a symbol. - - - - - Make a triple. - - - - - Map over triple member c. - - - - - Map over triple member b. - - - - - Map over triple member a. - - - - - Replace triple member c. - - - - - Replace triple member b. - - - - - Replace triple member a. - - - - - Append an item to a pair to build a triple. - - - - - Insert an item in a pair to build a triple. - - - - - Prepend an item to a pair to build a triple. - - - - - The third item in a triple. - - - - - The second item in a triple. - - - - - The first item in a triple. - - - - - The second and third items in a triple. - - - - - The first and third items in a triple. - - - - - The first and second items in a triple. - - - - - The third item in a triple. - - - - - The second item in a triple. - - - - - The first item in a triple. - - - - - Get the first property that is signalled to be preferred by the 'preference' predicate. - - - - - Get an existing type with the given unqualified name. Time-intensive. - - - - - Try to get an existing type with the given unqualified name. Time-intensive. - - - - - Get all the properties, preferring those that can be written to if there is a name clash. - - - - - Get all the properties that are signalled to be preferred by the 'preference' predicate. - - - - - Get the property with the given name, preferring the variant that can be written to, or null if none found. - - - - - Get the first property with the given name that is signalled to be preferred by the 'preference' predicate. - - - - - Get all the properties with the give name that can be written to. - - - - - Get all the properties that can be written to. - - - - - Get all the properties with the given name. - - - - - Get a property with the given name that can be written to, or null. - - - - - Try to get a custom type converter for the given type. - - - - - Get the type descriptor for this type as returned by the global TypeDescriptor. - - - - - Get the default value for a type. - Never returns null. - - - - - A very fast persistent hash map. - Works in effectively constant-time for look-ups and updates. - - - - - Convert a sequence of keys and values to a Vmap. - - - - - Convert a Vmap to a sequence of pairs of keys and values. - NOTE: This function seems to profile as being very slow. I don't know if it's the seq / yields syntax or what. - Don't use it unless you need its laziness or if performance won't be affected significantly. - - - - - Filter a Vmap. - - - - - Map over a Vmap. - - - - - Fold over a Vmap. - - - - - Combine the contents of two Vmaps, taking an item from the second map in the case of a key conflict. - - - - - Query that a Vmap contains a value with the given key. - - - - - Find a value with the given key in a Vmap. - Constant-time complexity with approx. 1/3 speed of Dictionary.GetValue. - - - - - Try to find a value with the given key in a Vmap. - Constant-time complexity with approx. 1/3 speed of Dictionary.TryGetValue. - - - - - Remove all values with the given keys from a Vmap. - - - - - Remove a value with the given key from a Vmap. - - - - - Add a list of values with associated keys to a Vmap. - - - - - Add a value with the key to a Vmap. - - - - - Query that a Vmap is empty. - - - - - Create an empty Vmap. - - - - - TODO: there's an F# issue where UseNullAsTrueValue does not work on unions with 4 or more cases - https://github.com/Microsoft/visualfsharp/issues/711 . Once resolved, should use it and be able - to make arrays with Array.zeroCreate alone without also copying over the empty array. - - - - - OPTIMIZATION: Requires an empty array to use the source of new array clones in order to avoid Array.create. - - - - - NOTE: This function seems to profile as being very slow. I don't know if it's the seq / yields syntax or what. - - - - - OPTIMIZATION: Array.Clone () is not used since it's been profiled to be slower - - - - - The VsyncBuilder instance. - Used like: vsync { return 0 } - - - - - The 'Vsync' (AKA, 'Variable Synchrony') monad. - Allows code to run in either an async or synchronous fashion to aid in debugging. - NOTE: to reference how all this stuff works in F#, see here - https://msdn.microsoft.com/en-us/library/dd233182.aspx - - - - - Creates a potentially asynchronous operation that runs 'f' over computation of 'a'. - - - - - Creates a potentially asynchronous computation that executes all the given computations - Initially queues each as work item using a fork/join pattern when asynchronous. - Executes each work item sequentially on the same thread otherwise. - - - - - Creates a potentially asynchronous computation that executes computation. - If this computation completes successfully, then return Choice1Of2 with the returned value. - If this computation raises before completion, then return Choice2Of2 with the raised exception. - - - - - Return a potentially asynchronous computation that will wait for the given task to complete and return its result. - - - - - Return a potentially asynchronous computation that will wait for the given task to complete and return its result. - - - - - Executes a computation in the thread pool when asynchronous, in the same thread otherwise. - - - - - Starts the potentially asynchronous computation. - Computation is run in the thread pool not awaiting its result when asynchronous. - Computation is run in the current thread awaiting its result otherwise. - - - - - Runs the potentially asynchronous computation and awaits its result. - - - - - Creates a potentially asynchronous computation that will sleep for the given time. - The operation will not block operating system threads for the duration of the wait when running asynchronously. - The operation will block operating system thread for the duration of the wait otherwise. - - - - - Creates a potentially asynchronous computation that runs the given computation and ignores its results. - - - - - Creates a potentially asynchronous computation that runs computation. - The action compensation 'h' is executed after the computation completes regardless of the outcome. - If the computation raises and exception itself, the original exception is discarded and the new exception becomes the overall result. - - - - - Creates a potentially asynchronous computation that runs computation and returns its result. - If an exception happens, then handler 'h' is called and the resulting computation executes instead. - - - - - Creates a potentially asynchronous computation that runs computation until guard 'g' becomes false. - - - - - Creates a potentially asynchronous computation that enumerates the sequence 's', and runs the body 'f' for each element. - - - - - Creates a potentially asynchronous computation that first runs computation 'a' and then computation 'b', returning the result of the latter. - - - - - Creates a potentially asynchronous computation that just returns unit. - - - - - Creates a potentially asynchronous computation that runs generator 'f'. - - - - - Creates a potentially asynchronous computation that runs binder 'f' over resource 'd'. - Dispose is executed as this computation yields its result or if the asynchronous computation raises or by cancellation. - - - - - Delegates to input computation. - - - - - Creates a potentially asynchronous operation that returns the result 'a'. - - - - - Creates a potentially asynchronous operation that runs computation, and when computation results, runs binder resolution. - - - - - Query whether Vsync is using synchronized or asynchronous processing. - - - - - Initialize Vsync to use synchronized or asynchronous processing. - - - - - Configures whether to use synchronized processing. - - - - - Try to get the default value for a given xtension member, returning None when defaulting is disallowed. - - - - - The dynamic assignment operator for an Xtension. - Example: - let entity = entity.Position <- Vector2 (4.0, 5.0). - - - - - The dynamic look-up operator for an Xtension. - Example: - let parallax = entity?Parallax : single - - - - - Get the default value of an instance of type 'r taking into account XDefaultValue decorations. - - - - - Xtensions (and their supporting types) are a dynamic, functional, and semi-convenient way - to implement dynamic properties. - - - - - Convert an xtension to a sequence of its entries. - - - - - Convert an xtension to a sequence of its entries. - - - - - Detach multiple properties from an Xtension. - - - - - Detach a property from an Xtension. - - - - - Attach multiple properties to an Xtension. - - - - - Attach a property to an Xtension. - - - - - Try to get a property from an xtension. - - - - - Get a property from an xtension. - - - - - An Xtension that cannot default and isn't sealed. - - - - - An Xtension that cannot default and is sealed. - - - - - An Xtension that can default and isn't sealed. - - - - - Make an extension with custom safety. - - - - - Check that a predicate passes for NO items in a sequence. - - - - - Implement a fold while folder results in Some. - - - - - Project the first sequence onto the second. - - - - - A more tolerant and open-minded take. - - - - - Check if no elements satisfy a predicate in a seq. - - - - - Fold-back for seqs. - - - - - Fold, now with a counter! - - - - - Fold with two inputs (plus state). - - - - - Convert option values to definite values. - - - - - Get a seq head or a default value if there is none. - - - - - Get Some head of the seq or None. - - - - - Add multiple values to a set. - - - - - Make a singleton set. - - - - diff --git a/Nu/Prime/Debug/Prime.exe b/Nu/Prime/Debug/Prime.exe deleted file mode 100644 index 02ac626434..0000000000 Binary files a/Nu/Prime/Debug/Prime.exe and /dev/null differ diff --git a/Nu/Prime/Debug/Prime.exe.config b/Nu/Prime/Debug/Prime.exe.config deleted file mode 100644 index 0d2b407b0f..0000000000 --- a/Nu/Prime/Debug/Prime.exe.config +++ /dev/null @@ -1,14 +0,0 @@ - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Nu/Prime/Debug/Prime.pdb b/Nu/Prime/Debug/Prime.pdb deleted file mode 100644 index 65ac2e40da..0000000000 Binary files a/Nu/Prime/Debug/Prime.pdb and /dev/null differ diff --git a/Nu/Prime/Release/Prime.XML b/Nu/Prime/Release/Prime.XML deleted file mode 100644 index 6871703347..0000000000 --- a/Nu/Prime/Release/Prime.XML +++ /dev/null @@ -1,2751 +0,0 @@ - - -Prime - - - - Try to find an index in reverse. - - - - - Hash a list. - NOTE: May be a pessimization. - - - - - Compare a list of strings lexicographically. - - - - - Stack a list from the left, starting with the empty list. - Example - [0, 1, 2] becomes [[]; [0]; [0; 1]; [0; 1; 2]] - - - - - Remove all elements from a list that satisfy a predicate. - - - - - Implement a fold while folder results in Some. - - - - - Convert a list to a HashSet. - - - - - Convert a list of values to a Dictionary. - - - - - Convert a list of pairs to a Dictionary. - - - - - Add a list of values to a Dictionary. - - - - - Add a list of pairs to a Dictionary. - - - - - Get the set interesection of two lists. - - - - - Query that the first list a superset of the second list. - - - - - Query that the first list a subset of the second list. - - - - - Runs a binary set operation on two lists that are converted to sets. - - - - - Take elements until an element satisfies a predicate, taking also that element. - - - - - Join a list of lists into a list separated by sep. - - - - - Join a list into a string separated by sep. - TODO: consider optimizing with a StringBuilder. - - - - - Join a list into a string separated by sep. - - - - - Pad a list with instances of its last item so that it is proportion to another list. - - - - - Pad a list with count instances of its last item. - - - - - Pad a list with count instances of its last item, removing items from back if count is negative. - - - - - Make a transformed list of options an all or nothing proposition. - TODO: optimize with program fusion. - - - - - Make a list of options an all or nothing proposition. - TODO: optimize with program fusion. - - - - - Convert option values to definite values. - - - - - Get all but the last item from a list. - - - - - Foldi for lists. - - - - - Fornone for lists. - - - - - Replace a list's head. - - - - - Project the first list onto the second. - - - - - A more tolerant and open-minded take. - - - - - Zip two lists by a function. - TODO: optimize with program fusion. - - - - - Threads a computation state through the adjacent members of a list. - - - - - For all 2 that indicates uneven lists by returning false rather than raising. - - - - - Try to find a value at index n. - - - - - Try to find a value. - - - - - Query that two lists are of the same length. - - - - - Query that a list has at least n elements. - - - - - Query that a list has exactly n elements. - - - - - Query that a list has at most n elements. - - - - - Query that a list has at least n elements. - - - - - Partition a list. - - - - - Check that a predicate passes for NO items in a list. - - - - - Cons with flipped arguments. - - - - - The missing cons function. - - - - - Converts Address types. - - - - - Describes an event subscription that can be boxed / unboxed. - - - - - Monadic return for the chain monad. - - - - - Monadic bind for the chain monad. - - - - - Implements the chain monad. - - - - - The Chain monad. Allows the user to define a chain of operations over the world that - optionally spans across a bounded number of events. - - The following is a potentially tail-recursible representation as speculated by @tpetracek - - 'w -> ('w * Either<'e -> Chain<'e, 'a, 'w>, 'a> -> 'a) -> 'a - - - - - Haskell-style Either type. - - - - - An event used by the event system. - - - - - Adds the capability to use purely-functional events with the given program type 'w. - - - - - Describes whether an in-flight event has been resolved or should cascade to down-stream handlers. - - - - - A hash-key-value triple, implemented with a struct for efficiency. - - - - - Along with the Label binding, is used to elaborate the name of a target without using a - string literal. - - - - - Specifies whether an event-based application is running or exiting. - - - - - Converts Name types. - - - - - An observation in the functional reactive style. - - - - - A participant in the event system. - - - - - The data for a change in a participant. - - - - - Concatenate two addresses, takings the type of first address. - - - - - Concatenate two addresses, forcing the type of first address. - - - - - Operators for the Participant type. - - - - - Converts Relation types. - - - - - Effectively new-types the Regex type to implement custom type-conversation without needing - explicit initialization by the client program. - - - - - Converts Rexpr types. - - - - - A map of event subscriptions. - - - - - An entry in the subscription map. - - - - - Abstracts over a subscription sorting procedure. - - - - - Describes an event subscription. - - - - - Compresses two unions into a single union in a symbolic-expression. - - - - - A map of subscription keys to unsubscription data. - - - - - The Vsync computation expression builder. - - - - - An attribute to specify the default value of an XProperty. - - - - - A map of XProperties. - - - - - An Xtension property. - - - - - Describes an XProperty. - - - - - Concatenate two addresses, taking the type of the second address. - - - - - Concatenate two addresses, forcing the type of second address. - - - - - Concatenate two addresses, taking the type of first address. - - - - - Concatenate two addresses, forcing the type of first address. - - - - - Concatenate two addresses of the same type. - - - - - Convert a single name into an address. - - - - - Make an address from a '/' delimited string. - NOTE: do not move this function as the AddressConverter's reflection code relies on it being exactly here! - - - - - Convert a names list into an address. - - - - - Hash an Address. - - - - - Convert a full name into an address. - - - - - Equate Addresses. - - - - - Compare Addresses. - - - - - Convert any address to an obj Address. - - - - - Convert an address of type 'a to an address of type 'b. - - - - - Concatenate two addresses, forcing the type of second address. - - - - - Concatenate two addresses, taking the type of the second address. - - - - - Concatenate two addresses, forcing the type of first address. - - - - - Concatenate two addresses, taking the type of first address. - - - - - Concatenate two addresses of the same type. - - - - - Specifies the address of an identifiable value. - - - - - Query that an address is devoid of names. - - - - - Get the length of an address by its names. - - - - - Take an address composed of all but the last name of an address. - - - - - Take the last name of an address. - - - - - Take an address composed of the given number of names of an address. - - - - - Take an address composed of the name of an address minus a skipped amount of names. - - - - - Take a name of an address. - - - - - Take the tail of an address. - - - - - Take the head of an address. - - - - - Get the address's hash code. - - - - - Get the name of an address. - - - - - Get the full name of an address. - - - - - Change the type of an address. - - - - - Get the names of an address. - - - - - Make an address from a '/' delimited string. - - - - - Make an address from names. - - - - - The empty address. - - - - - Concatenate two addresses, forcing the type of second address. - - - - - Concatenate two addresses, taking the type of the second address. - - - - - Concatenate two addresses, forcing the type of first address. - - - - - Concatenate two addresses, taking the type of first address. - - - - - Concatenate two addresses of the same type. - - - - - Convert any address to an obj Address. - - - - - Convert a single name into an address. - - - - - Convert a full name into an address. - - - - - Convert a names list into an address. - - - - - Convert an address of type 'a to an address of type 'b. - - - - - Creates an asynchronous operation that runs 'f' over computation of 'a'. - - - - - Async is missing a couple of functions, as we know... - - - - - Run a chain over Nu's event system. - Allows each chainhronized operation to run without referencing its source event, and - without specifying its event handling approach by assuming Resolve. - - - - - Run a chain over Nu's event system. - Allows each chainhronized operation to run without referencing its source event, and - without specifying its event handling approach by assuming Cascade. - - - - - Run a chain to its end, providing unit for all its steps. - - - - - Run a chain to its end, providing unit for all its steps. - - - - - Run a chain to its end, providing 'e' for all its steps. - - - - - Advance a chain value by one step, providing 'e'. - - - - - Step once into a chain. - - - - - Loop in a chain context while 'pred' evaluates to true. - - - - - Loop in a chain context while 'pred' evaluate to true. - - - - - React to the next event, discarding the event's value. - - - - - React to the next event, using the event's value in the reaction. - - - - - Pass over the next event. - - - - - Get the next event. - - - - - Update the world. - - - - - Update the world with an additional transformed world parameter. - - - - - Set the world. - - - - - Get the world transformed by 'by'. - - - - - Get the world. - - - - - Monadic bind for the chain monad. - - - - - Monadic return for the chain monad. - - - - - Builds the chain monad. - - - - - Like dict, but returns a concrete Dictionary instance with structural hashing. - - - - - Try to find a value in a dictonary. - - - - - Map over a dictionary. A new dictionary is produced. - - - - - Make a dictionary with a single element. - - - - - Add all the elements of another dictionary. - - - - - Add multiple kvps to a dictionary. - - - - - Check value equality of dictionary. - NOTE: be wary the highly imperative nature of this code. - - - - - Force the addition of an element, removing the existing one if necessary. - - - - - Try to add an element, returning false upon failure. - - - - - Builds an either monad. - - - - - Split a sequences of Either values into a pair of left and right value lists. - - - - - Map over the right side of an Either value. - - - - - Map over the left side of an Either value. - - - - - Get only the Right values of a sequence of an Either value. - - - - - Get only the Left values of a sequence of an Either value. - - - - - Get the Right value of an Either value, failing if not available. - - - - - Get the Left value of an Either value, failing if not available. - - - - - Query whether an Either value is a Right value. - - - - - Query whether an Either value is a Left value. - - - - - The computation expression builder for Either. - - - - - Monadic 'return from' for Either. - - - - - Monadic return for Either. - - - - - Monadic bind for Either. - - - - - Describes how events are filtered. - - - - - Filter events. - - - - - Describes how events are filtered. - - - - - A publisher-neutral, purely functional event system. - - - - - Make an event system. - - - - - Log an event. - - - - - Set the state of the event filter. - - - - - Get the state of the event filter. - - - - - Set whether events are being traced. - - - - - Get whether events are being traced. - - - - - Get event state. - - - - - Set unsubscriptions. - - - - - Set subscriptions. - - - - - Get unsubscriptions. - - - - - Get subscriptions. - - - - - Remove event state. - - - - - Add event state. - - - - - Keep active a subscription for the lifetime of a participant. - - - - - Keep active a subscription for the lifetime of a participant, and be provided with an unsubscription callback. - - - - - Subscribe to an event. - - - - - Subscribe to an event using the given subscriptionKey. - - - - - Subscribe to an event, and be provided with an unsubscription callback. - - - - - Subscribe to an event using the given subscriptionKey, and be provided with an unsubscription callback. - - - - - Unsubscribe from an event. - - - - - Publish an event with no subscription sorting. - - - - - Publish an event, using the given publishSorter procedure to arrange the order to which subscriptions are published. - - - - - Publish an event, using the given getSubscriptions and publishSorter procedures to arrange the order to which subscriptions are published. - - - - - A 'no-op' for subscription sorting - that is, performs no sorting at all. - - - - - Sort subscriptions using categorization via the 'by' procedure. - - - - - Set the state of the event filter. - - - - - Get the state of the event filter. - - - - - Set whether events are being traced. - - - - - Get whether events are being traced. - - - - - Get event state from the world. - - - - - Remove event state from the world. - - - - - Add event state to the world. - - - - - Set event unsubscriptions. - - - - - Set event subscriptions. - - - - - Get event unsubscriptions. - - - - - Get event subscriptions. - - - - - Update the event system in the world. - - - - - Get the event system as tranformed via 'by'. - - - - - Get the event system. - - - - - Represents any event. - - - - - Generic (and sectioned) division. - - - - - Generic (and sectioned) multiplication. - - - - - Generic (and sectioned) subtraction. - - - - - Generic (and sectioned) addition. - - - - - Generic (and sectioned) decrement. - - - - - Generic (and sectioned) increment. - - - - - The generic monoidal append operation. - - - - - The generic monoidal empty value. - - - - - The generic one value. - - - - - The generic zero value. - - - - - Make a hash set with a single element. - - - - - Force the addition of an element, removing the existing one if necessary. - - - - - Presents a purely-functional interface to a cached value. - Works by associating a cached value with a given cache key such that the cached value remains valid when queried - for using the same cache key (as decided by a simple key comparer function), automatically rebuilding the cached - value and key (as done with a simple factory function). - - - - Make a keyed cache value. - The current key against which to validate the cache. - The value associated with the cache key. - - - Get the cached value. - Determines the equality of the key used to consider if the cache is valid. - Generates a fresh key and corresponding value to cache. - The current key against which to validate the cache. - The keyed cache. - - - - The number of cache misses that have occured when using this type. - Useful for performance trouble-shooting in Debug mode. - - - - - The number of cache hits that have occured when using this type. - Useful for performance trouble-shooting in Debug mode. - - - - - Label for module names. - Needed since we can't utter something like typeof<MyModule>. - - - - - Along with the LabelName type, is used to elaborate the name of a target without - using a string literal. - - Usage: - let fieldName = Label?MyFieldName - - - - - Initialize logging. - - - - - Conditional trace message call where condition is eagerly evaluted. - - - - - Log a trace message using Trace.Fail and call to info. - - - - - Conditional debug message call where condition is lazily evaluated. - - - - - Log a debug message with Debug.Fail and call to info. - - - - - Log a purely informational message using Trace.WriteLine. - - - - - Log a remark with a custom header using Trace.WriteLine. - - - - - Combine the contents of two maps, taking an item from the second map in the case of a key - conflict. - - - - - Convert any map value to an obj. - - - - - Convert a list of a map's values by a function. - - - - - Get a list of a map's values. - - - - - Convert a list of a map's keys by a function. - - - - - Get a list of a map's keys. - - - - - Convert a map to a list by a function. - TODO: Optimize by program fusion. - - - - - Make a map from a list by a function. - TODO: Optimize by program fusion. - - - - - Convert a seq of a map's values by a function. - - - - - Get a seq of a map's values. - - - - - Convert a seq of a map's keys by a function. - - - - - Get a seq of a map's keys. - - - - - Convert a map to a seq by a function. - TODO: Optimize by program fusion. - - - - - Make a map from a seq by a function. - TODO: Optimize by program fusion. - - - - - Add multiple values to a map. - - - - - Make a singleton map. - - - - - Combine the contents of two maps, taking an item from the second map in case of a key overlap. - - - - - Presents a purely-functional interface to a mutable object / record / whatever. - If it is not satisfactorily efficient to run a clone operation on the mutant for every get, - just pass in the id function for make's cloneMutant arg, but make sure to NEVER mutate the - returned mutant! - - - - Make a mutant cache. - - A function to clone the mutant before presenting it to the outside world. - Feel free to pass id if you can ensure that the presented mutant will never be mutated externally. - - The mutant (mutable object / record / whatever) to be cached. - - - Mutate the underlying mutant (mutable object / record / whatever). - A function that rebuilds the mutant from scratch in case the current underlying mutant is out of date. - A function that mutates the underlying mutant. - The mutant cache. - - - Get the underlying mutant (mutable object / record / whatever). - A function that rebuilds the mutant from scratch in case the current underlying mutant is out of date. - The mutant cache. - - - - The number of mutant rebuilds that have occured when using this type. - Useful for performance trouble-shooting in Debug mode. - - - - - Make a name from a non-empty string without whitespace. - - - - - Equate Names. - - - - - Compare Names. - - - - - A name for optimized keying in hashing containers. - - - - - The empty name, consisting of an empty string. - - - - - Hash a list of names. - - - - - Compare a list of names lexicographically. - - - - - Query for equality a list of names lexicographically. - - - - - Split a name on a separator char array. - - - - - Join a list of names by a separator string. - - - - - Get the name of a name key. - - - - - Convert a name string to a name. - - - - - Filter out participant change events that do not relate to those returned by 'valueGetter'. - - - - - Filter out the events with non-unique data from an observation. - - - - - Filter out the events with non-unique data as defined by 'by' from an observation. - - - - - Transform an observation into a running minimum of it numeric data. - - - - - Transform an observation into a running maximum of it numeric data. - - - - - Filter out the None data values from an observation and strip the Some constructor from - the remaining values. - - - - - Take only the first event from an observation that satisfies 'p'. - - - - - Take only the nth event from an observation. - - - - - Skip the first event of an observation. - - - - - Take only the first event from an observation. - - - - - Skip the first n events in an observation. - - - - - Take only the first n events from an observation. - - - - - Transform an observation by duplicating its data into pairs. - - - - - Transform an observation of pairs by a mapping of its snd values. - - - - - Transform an observation's pairs by a mapping of its fst values. - - - - - Transform an observation of pairs into its snd values. - - - - - Transform an observation of pairs into its fst values. - - - - - Transform an observation into a running product of its data. - - - - - Transform an observation into a running sum of its data. - - - - - Transform an observation into a running set of its event's unique data. - - - - - Transform an observation into a running set of its event's unique data as defined by 'by'. - - - - - Transform an observation into a running map from its event's data to keys as defined by 'f'. - - - - - Transform an observation into a running average of its event's numeric data. - - - - - Scan over an observation, accumulating state. - - - - - Scan over an observation, accumulating state. - - - - - Scan over an observation, accumulating state. - - - - - Subscribe to an observation until the observer is removed from the world. - - - - - Subscribe to an observation until the observer is removed from the world, - returning both an unsubscription procedure as well as the world as augmented with said - subscription. - - - - - Terminate an observation when the observer is removed from the world. - - - - - Terminate an observation when an event at the given address is raised. - - - - - Subscribe to an observation, handling each event with the given 'handleEvent' procedure. - - - - - Subscribe to an observation, handling each event with the given 'handleEvent' procedure, - returning both an unsubscription procedure as well as the world as augmented with said - subscription. - - - - - TODO: document! - - - - - TODO: document! - - - - - TODO: document! - - - - - Map an observation by the given 'mapper' procedure. - - - - - Filter an observation by the given 'pred' procedure. - - - - - Combine an observation with the events from the given address. Combination is in 'sum - form', which is defined as an Either of the data of the combined events, where only data - from the most recent event is available at a time. - TODO: unit test for this! - - - - - Combine an observation with the events from the given address. Combination is in 'product - form', which is defined as a pair of the data of the combined events. Think of it as 'zip' - for event streams. - TODO: unit test for this! - - - - - Make an observation of an event at the given address. - - - - - Propagate the event data of an observation to a value in the observing participant when the - observer exists (doing nothing otherwise). - - - - - Make an observation of the observer's change events. - - - - - Pipe-right arrow that provides special precedence for observations. - - - - - Test just the value parts of a type for equality. Reflective and slow. - - - - - Test for equality, usually faster than (=). - - - - - Sequences two functions like Haskell ($). - - - - - As close as we can get to F# implicits. - - - - - Fail with an unexpected match failure. - - - - - Make a Guid from a couple of ints. - It is the user's responsibility to ensure uniqueness when using the resulting Guids. - - - - - Make a Guid. - - - - - Get the enumerator for a sequence. - - - - - Short-hand for linq enumerable cast. - - - - - Add a custom TypeConverter to an existing type. - - - - - Perform an operation until a predicate passes. - - - - - Apply a function recursively a number of times. - - - - - Test just the value parts of a type for equality. - NOTE: This function uses mad reflection, so is extremely slow, and should not be used in tight loops. - - - - - Test for reference equality. - - - - - Test for equality, usually faster than (=). - - - - - Get the value of a property. - - - - - Get the properties of a type. - - - - - Get the value of a field. - - - - - Get the fields of a type. - - - - - Get the .NET type name of a target. - - - - - Get the .NET type of a target. - - - - - Compare two strings. - - - - - Test for string equality. - - - - - Convert a nullable value into an option. - - - - - Test that the given type has null as an actual value. - - - - - Test for non-null. - - - - - Test for null. - - - - - Transforms a function by flipping the order of its arguments. - - - - - Transforms a function by flipping the order of its arguments. - - - - - Transforms a function by flipping the order of its arguments. - - - - - Uncurry two values. - - - - - Curry up two values. - - - - - Convert any value to an obj. - - - - - The absurdity function with two arguments. - No matter what you pass it, it evaluates to false. - - - - - The absurdity function. - No matter what you pass it, it evaluates to false. - - - - - The tautology function with three arguments. - No matter what you pass it, it evaluates to true. - - - - - The tautology function with two arguments. - No matter what you pass it, it evaluates to true. - - - - - The tautology function. - No matter what you pass it, it evaluates to true. - - - - - Get an option's value, or missing that, return a default value. - - - - - Join an option option. - - - - - Sort pairs by fst in descending order. - - - - - Make a pair. - - - - - Map over pair member snd. - - - - - Map over pair member fst. - - - - - Replace pair member snd. - - - - - Replace pair member fst. - - - - - Performs some ad-hoc tests to compare performance of maps. - - - - - An immutable random number generator using the xorshift* algorithm. - - - - - Make a rand value generator from the default seed state. - - - - - Make a rand value generator from the given int seed state. - May not be zero. - - - - - Make a rand value generator from the given seed state. - May not be zero. - - - - - Get the next random value below the given maximum as an int64 type. - - - - - Get the next random value as an int64 type. - NOTE: System.Random.Next will never return Int64.MaxValue, but this will. - - - - - Get the next random value below the given maximum as an int type. - - - - - Get the next random value as an int type. - NOTE: System.Random.Next will never return Int32.MaxValue, but this will. - - - - - Get the next random value below the given maximum as a single type. - - - - - Get the next random value as a double type. - - - - - Get the next random value below the given maximum as a double type. - - - - - Get the next random value as a double type. - - - - - The internal state of rand, useful for serialization and duplication. - - - - - Advance the state of rand, thus yielding a new outcome. - - - - - The default seed state for rand. - NOTE: number generated via http://www.random.org/bytes/ - - - - - Get the sample value used to generate the current random value. - - - - - Make a relation from a '/' delimited string where '.' are empty. - NOTE: do not move this function as the RelationConverter's reflection code relies on it being exactly here! - - - - - Hash a Relation. - - - - - Equate Relations. - - - - - A relation that can be resolved to an address via projection. - - - - - Make an address from a '/' delimited string. - - - - - Make a relation from a list of option names. - - - - - Resolve a relationship to an address. - - - - - Expand escaped characters in a string. - - - - - Contract escaped characters in a string. - - - - - Surround a string with another surrounding string. - - - - - Convert a string to an array of characters. - TODO: optimize this. - - - - - Get the string with the given ending. - - - - - Textualize a string for usage as text. - - - - - Converts a list of characters into a string. - - - - - Converts a string into a list of characters. - - - - - Pretty-print a symbol string in the form an symbolic-expression. - - - - - Cascade a symbol string into multiple lines with proper tabbing. - - - - - Attempt to a symbol index from a string. - - - - - Try to get the Origin of the symbol if it has one. - - - - - Convert a symbol to a string, with the following unparses: - - (* Atom values *) - None - CharacterAnimationFacing - - (* Number values *) - 0 - -5 - - (* String value *) - "String with quoted spaces." - - (* Quoted value *) - `[Some 1]' - - (* Symbols values *) - [] - [Some 0] - [Left 0] - [[0 1] [2 4]] - [AnimationData 4 8] - [Gem `[Some 1]'] - - ...and so on. - - - - - Convert a string to a symbol, with the following parses: - - (* Atom values *) - None - CharacterAnimationFacing - - (* Number values *) - 0 - -5 - - (* String value *) - "String with quoted spaces." - - (* Quoted value *) - `[Some 1]' - - (* Symbols values *) - [] - [Some 0] - [Left 0] - [[0 1] [2 4]] - [AnimationData 4 8] - [Gem `[Some 1]'] - - ...and so on. - - - - - Convert a value from given type using its assigned type converter. - - - - - Convert a value to the given type using its assigned type converter. - - - - - Query that a value of the destination type can be converted from the source type. - - - - - Query that a value of the source type can be converted to the destination type. - - - - - Uses a symbolic converter to convert a string to a value. - - - - - Uses a symbolic converter to convert a value to a string. - - - - - Convert a symbol to a value. - - - - - Convert a value to a symbol. - - - - - Make a triple. - - - - - Map over triple member c. - - - - - Map over triple member b. - - - - - Map over triple member a. - - - - - Replace triple member c. - - - - - Replace triple member b. - - - - - Replace triple member a. - - - - - Append an item to a pair to build a triple. - - - - - Insert an item in a pair to build a triple. - - - - - Prepend an item to a pair to build a triple. - - - - - The third item in a triple. - - - - - The second item in a triple. - - - - - The first item in a triple. - - - - - The second and third items in a triple. - - - - - The first and third items in a triple. - - - - - The first and second items in a triple. - - - - - The third item in a triple. - - - - - The second item in a triple. - - - - - The first item in a triple. - - - - - Get the first property that is signalled to be preferred by the 'preference' predicate. - - - - - Get an existing type with the given unqualified name. Time-intensive. - - - - - Try to get an existing type with the given unqualified name. Time-intensive. - - - - - Get all the properties, preferring those that can be written to if there is a name clash. - - - - - Get all the properties that are signalled to be preferred by the 'preference' predicate. - - - - - Get the property with the given name, preferring the variant that can be written to, or null if none found. - - - - - Get the first property with the given name that is signalled to be preferred by the 'preference' predicate. - - - - - Get all the properties with the give name that can be written to. - - - - - Get all the properties that can be written to. - - - - - Get all the properties with the given name. - - - - - Get a property with the given name that can be written to, or null. - - - - - Try to get a custom type converter for the given type. - - - - - Get the type descriptor for this type as returned by the global TypeDescriptor. - - - - - Get the default value for a type. - Never returns null. - - - - - A very fast persistent hash map. - Works in effectively constant-time for look-ups and updates. - - - - - Convert a sequence of keys and values to a Vmap. - - - - - Convert a Vmap to a sequence of pairs of keys and values. - NOTE: This function seems to profile as being very slow. I don't know if it's the seq / yields syntax or what. - Don't use it unless you need its laziness or if performance won't be affected significantly. - - - - - Filter a Vmap. - - - - - Map over a Vmap. - - - - - Fold over a Vmap. - - - - - Combine the contents of two Vmaps, taking an item from the second map in the case of a key conflict. - - - - - Query that a Vmap contains a value with the given key. - - - - - Find a value with the given key in a Vmap. - Constant-time complexity with approx. 1/3 speed of Dictionary.GetValue. - - - - - Try to find a value with the given key in a Vmap. - Constant-time complexity with approx. 1/3 speed of Dictionary.TryGetValue. - - - - - Remove all values with the given keys from a Vmap. - - - - - Remove a value with the given key from a Vmap. - - - - - Add a list of values with associated keys to a Vmap. - - - - - Add a value with the key to a Vmap. - - - - - Query that a Vmap is empty. - - - - - Create an empty Vmap. - - - - - TODO: there's an F# issue where UseNullAsTrueValue does not work on unions with 4 or more cases - https://github.com/Microsoft/visualfsharp/issues/711 . Once resolved, should use it and be able - to make arrays with Array.zeroCreate alone without also copying over the empty array. - - - - - OPTIMIZATION: Requires an empty array to use the source of new array clones in order to avoid Array.create. - - - - - NOTE: This function seems to profile as being very slow. I don't know if it's the seq / yields syntax or what. - - - - - OPTIMIZATION: Array.Clone () is not used since it's been profiled to be slower - - - - - The VsyncBuilder instance. - Used like: vsync { return 0 } - - - - - The 'Vsync' (AKA, 'Variable Synchrony') monad. - Allows code to run in either an async or synchronous fashion to aid in debugging. - NOTE: to reference how all this stuff works in F#, see here - https://msdn.microsoft.com/en-us/library/dd233182.aspx - - - - - Creates a potentially asynchronous operation that runs 'f' over computation of 'a'. - - - - - Creates a potentially asynchronous computation that executes all the given computations - Initially queues each as work item using a fork/join pattern when asynchronous. - Executes each work item sequentially on the same thread otherwise. - - - - - Creates a potentially asynchronous computation that executes computation. - If this computation completes successfully, then return Choice1Of2 with the returned value. - If this computation raises before completion, then return Choice2Of2 with the raised exception. - - - - - Return a potentially asynchronous computation that will wait for the given task to complete and return its result. - - - - - Return a potentially asynchronous computation that will wait for the given task to complete and return its result. - - - - - Executes a computation in the thread pool when asynchronous, in the same thread otherwise. - - - - - Starts the potentially asynchronous computation. - Computation is run in the thread pool not awaiting its result when asynchronous. - Computation is run in the current thread awaiting its result otherwise. - - - - - Runs the potentially asynchronous computation and awaits its result. - - - - - Creates a potentially asynchronous computation that will sleep for the given time. - The operation will not block operating system threads for the duration of the wait when running asynchronously. - The operation will block operating system thread for the duration of the wait otherwise. - - - - - Creates a potentially asynchronous computation that runs the given computation and ignores its results. - - - - - Creates a potentially asynchronous computation that runs computation. - The action compensation 'h' is executed after the computation completes regardless of the outcome. - If the computation raises and exception itself, the original exception is discarded and the new exception becomes the overall result. - - - - - Creates a potentially asynchronous computation that runs computation and returns its result. - If an exception happens, then handler 'h' is called and the resulting computation executes instead. - - - - - Creates a potentially asynchronous computation that runs computation until guard 'g' becomes false. - - - - - Creates a potentially asynchronous computation that enumerates the sequence 's', and runs the body 'f' for each element. - - - - - Creates a potentially asynchronous computation that first runs computation 'a' and then computation 'b', returning the result of the latter. - - - - - Creates a potentially asynchronous computation that just returns unit. - - - - - Creates a potentially asynchronous computation that runs generator 'f'. - - - - - Creates a potentially asynchronous computation that runs binder 'f' over resource 'd'. - Dispose is executed as this computation yields its result or if the asynchronous computation raises or by cancellation. - - - - - Delegates to input computation. - - - - - Creates a potentially asynchronous operation that returns the result 'a'. - - - - - Creates a potentially asynchronous operation that runs computation, and when computation results, runs binder resolution. - - - - - Query whether Vsync is using synchronized or asynchronous processing. - - - - - Initialize Vsync to use synchronized or asynchronous processing. - - - - - Configures whether to use synchronized processing. - - - - - Try to get the default value for a given xtension member, returning None when defaulting is disallowed. - - - - - The dynamic assignment operator for an Xtension. - Example: - let entity = entity.Position <- Vector2 (4.0, 5.0). - - - - - The dynamic look-up operator for an Xtension. - Example: - let parallax = entity?Parallax : single - - - - - Get the default value of an instance of type 'r taking into account XDefaultValue decorations. - - - - - Xtensions (and their supporting types) are a dynamic, functional, and semi-convenient way - to implement dynamic properties. - - - - - Convert an xtension to a sequence of its entries. - - - - - Convert an xtension to a sequence of its entries. - - - - - Detach multiple properties from an Xtension. - - - - - Detach a property from an Xtension. - - - - - Attach multiple properties to an Xtension. - - - - - Attach a property to an Xtension. - - - - - Try to get a property from an xtension. - - - - - Get a property from an xtension. - - - - - An Xtension that cannot default and isn't sealed. - - - - - An Xtension that cannot default and is sealed. - - - - - An Xtension that can default and isn't sealed. - - - - - Make an extension with custom safety. - - - - - Check that a predicate passes for NO items in a sequence. - - - - - Implement a fold while folder results in Some. - - - - - Project the first sequence onto the second. - - - - - A more tolerant and open-minded take. - - - - - Check if no elements satisfy a predicate in a seq. - - - - - Fold-back for seqs. - - - - - Fold, now with a counter! - - - - - Fold with two inputs (plus state). - - - - - Convert option values to definite values. - - - - - Get a seq head or a default value if there is none. - - - - - Get Some head of the seq or None. - - - - - Add multiple values to a set. - - - - - Make a singleton set. - - - - diff --git a/Nu/Prime/Release/Prime.exe b/Nu/Prime/Release/Prime.exe deleted file mode 100644 index 5e918bc2d7..0000000000 Binary files a/Nu/Prime/Release/Prime.exe and /dev/null differ diff --git a/Nu/Prime/Release/Prime.exe.config b/Nu/Prime/Release/Prime.exe.config deleted file mode 100644 index 0d2b407b0f..0000000000 --- a/Nu/Prime/Release/Prime.exe.config +++ /dev/null @@ -1,14 +0,0 @@ - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Nu/Prime/Release/Prime.pdb b/Nu/Prime/Release/Prime.pdb deleted file mode 100644 index a80852e36a..0000000000 Binary files a/Nu/Prime/Release/Prime.pdb and /dev/null differ