Giter Club home page Giter Club logo

unquote's People

Contributors

alex-bogomaz avatar daniel-chambers avatar eiriktsarpalis avatar fbehrens avatar mexx avatar stephen-imperfect avatar stephen-swensen avatar thinkbeforecoding avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

unquote's Issues

Decompiler Feature Request: support UnionCaseTest expressions

For example,

source <@ let [a;b] = [1;2] in a,b @>

produces

let patternInput = [1; 2] in if UnionCaseTest (patternInput, FSharpList`1.Cons) 
then (if UnionCaseTest (PropertyGet (Some (patternInput),
                            Microsoft.FSharp.Collections.FSharpList`1[System.Int32] Tail,
                            []), FSharpList`1.Cons) then (if UnionCaseTest (PropertyGet (Some (PropertyGet (Some (patternInput),
                                               Microsoft.FSharp.Collections.FSharpList`1[System.Int32] Tail,
                                               [])),
                            Microsoft.FSharp.Collections.FSharpList`1[System.Int32] Tail,
                            []), FSharpList`1.Empty) then (let a = patternInput.Head in let b = patternInput.Tail.Head in (a, b)) else raise (MatchFailureException("stdin", 18, 14))) else raise (MatchFailureException("stdin", 18, 14))) else raise (MatchFailureException("stdin", 18, 14))

Original issue reported on code.google.com by [email protected] on 15 Feb 2011 at 1:29

Type.FSharpName bug: can't handle types in modules

For example:

> module Module = type Hello(x:int) = let x = x;;

module Module = begin
  type Hello =
    class
      new : x:int -> Hello
    end
end

> Sprint.sprintSig typeof<Module.Hello>;;
val it : string = "FSI_0264+Module+Hello"

Original issue reported on code.google.com by [email protected] on 20 Feb 2011 at 4:40

Decompiler Bug: backwards pipe precedence incorrect

For example,

<@ List.map id <| [1;2;3;] @> |> source

is

let mapping = fun x -> id x in fun list -> List.map mapping list <| [1; 2; 3]

but should be

(let mapping = fun x -> id x in fun list -> List.map mapping list) <| [1; 2; 3]




Original issue reported on code.google.com by [email protected] on 17 Mar 2011 at 3:43

Decompiler Bug or F# Quotation Bug: generic empty list treated as call

Possibly a Quotation bug, resolution uncertain:

> let xl = [];;

val xl : 'a list

> <@ xl @>;;

  <@ xl @>;;
  ^^^^^^^^

C:\Users\Stephen\AppData\Local\Temp\stdin(9,1): error FS0030: Value 
restriction. The value 'it' has been inferred to have generic type
    val it : Expr<'_a list>    
Either define 'it' as a simple data term, make it a function with explicit 
arguments or, if you do not intend for it to be generic, add a type annotation.
> <@@ xl @@>;;
val it : Expr =
  Call (None,
      Microsoft.FSharp.Collections.FSharpList`1[System.Object] xl[Object](), [])
    {CustomAttributes = [NewTuple (Value ("DebugRange"),
          NewTuple (Value ("stdin"), Value (10), Value (4), Value (10),
                    Value (6)))];
     Type = Microsoft.FSharp.Collections.FSharpList`1[System.Object];}
> source <@ xl @>
;;
val it : string = "xl()"

Original issue reported on code.google.com by [email protected] on 20 Feb 2011 at 2:55

Decompiler Bug, UnionCaseTest: zero arg unions sprinted with "()"

UnionCaseTest expressions should not sprint "()" for zero arg unions:

> source <@ match None with | None -> true | _ -> false @>;;
val it : string =
  "let matchValue = None in (match matchValue with | None() -> true | _ -> false) && true"

should instead produce the following code:

let matchValue = None in (match matchValue with | None -> true | _ -> false) && 
true

Original issue reported on code.google.com by [email protected] on 1 Mar 2011 at 1:21

Add support for typed* (nested) Quote expressions

Now that we have our own quotation evaluator, we are able to support expression 
types we were not able to before due to PowerPack's lack of support. One such 
expression is Quote. However, it appears impossible to differentiate between 
typed and untyped nested quotations (Quote expressions), all of them are as 
untyped quoations. So we still have to limit ourselves to only untyped 
quotation expressions.

This has the interesting feature that we can now use unquote to test quotation 
processors, including itself, as fully captured quotation expressions.

Original issue reported on code.google.com by [email protected] on 4 Jul 2011 at 5:29

Reduction Bug: error reducing sprintf Application; lhs match of Application needs to be loosened

For example,

> unquote <@ sprintf "%A" 23 @>;;

(let clo1 = sprintf (PrintfFormat`5("%A")) in fun arg10 -> clo1 arg10) 23
System.Exception: Expected Application((Lambda _ | Value _), rhs) or 
Application(lhs,rhs), got 

Let (clo1,
     Call (None,
           Microsoft.FSharp.Core.FSharpFunc`2[System.Int32,System.String] PrintFormatToString[FSharpFunc`2](Microsoft.FSharp.Core.PrintfFormat`4[Microsoft.FSharp.Core.FSharpFunc`2[System.Int32,System.String],Microsoft.FSharp.Core.Unit,System.String,System.String]),
           [Coerce (NewObject (Void .ctor(System.String), Value ("%A")),
                    Microsoft.FSharp.Core.PrintfFormat`4[[Microsoft.FSharp.Core.FSharpFunc`2[[System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089],[System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]], FSharp.Core, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a],[Microsoft.FSharp.Core.Unit, FSharp.Core, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a],[System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089],[System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]])]),
     Lambda (arg10, Application (clo1, arg10)))

within

Application (Let (clo1,
                  Call (None,
                        Microsoft.FSharp.Core.FSharpFunc`2[System.Int32,System.String] PrintFormatToString[FSharpFunc`2](Microsoft.FSharp.Core.PrintfFormat`4[Microsoft.FSharp.Core.FSharpFunc`2[System.Int32,System.String],Microsoft.FSharp.Core.Unit,System.String,System.String]),
                        [Coerce (NewObject (Void .ctor(System.String),
                                            Value ("%A")),
                                 Microsoft.FSharp.Core.PrintfFormat`4[[Microsoft.FSharp.Core.FSharpFunc`2[[System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089],[System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]], FSharp.Core, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a],[Microsoft.FSharp.Core.Unit, FSharp.Core, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a],[System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089],[System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]])]),
                  Lambda (arg10, Application (clo1, arg10))), Value (23))

   at FSI_0008.Swensen.Unquote.Reduce.allArgsReduced@58(FSharpExpr expr, FSharpExpr subexpr) in ...\Reduce.fs:line 64
   at FSI_0008.Swensen.Unquote.Reduce.reduce(FSharpExpr expr) in ...\Reduce.fs:line 73
   at FSI_0008.Swensen.Unquote.Reduce.loop@87-3(FSharpExpr expr, FSharpList`1 acc) in ...\Reduce.fs:line 89

val it : unit = ()


Original issue reported on code.google.com by [email protected] on 6 Mar 2011 at 1:30

Decompiler Bug: active patterns don't produce correct F# code

For example,

val it : unit = ()
> source 
        <@  
            match "hello world" with
            | InterpretedMatch @"llo" _ -> true
            | _ -> false
        @>;;
val it : string =
  "let matchValue = "hello world" in let activePatternResult = RegexUtils.|InterpretedMatch|_| "llo" matchValue in (match activePatternResult with | Some(_) -> true | _ -> false) && true"

However, as we learned with UnionCaseTest, the best output we can produced for 
even "simple" discriminant union or here active pattern pattern matching 
expressions is too complex to be helpful, therefore we urge Unquote users to 
avoid pattern matching in assertions and give this issue Low priority.

Original issue reported on code.google.com by [email protected] on 21 Feb 2011 at 3:18

Statically link FSharp.PowerPack.Metadata

This will increase the size of the resulting Unquote assembly by about 2mb, but 
will remove any dependency on the PowerPack (having also eliminated our 
dependency on FSharp.PowerPack.Linq by implementing our own evaluation engine).

Original issue reported on code.google.com by [email protected] on 7 Jul 2011 at 3:55

Decompiler Feature Request: name TupleGet pattern match value using "itemX" instead of "indexX"

e.g., instead of 

    source <@ let a,b = t in a,b @> =? 
        "let b = (let _,index1 = t in index1) in let a = (let index0,_ = t in index0) in (a, b)"

sprint as follows to better align with position based paradigm of tuples:

    source <@ let a,b = t in a,b @> =? 
        "let b = (let _,item2 = t in item2) in let a = (let item1,_ = t in item0) in (a, b)"

note: using lower-case "item" instead of upper-case (compared to underlying 
tuple property) since pattern match bindings should use lower-case.

Original issue reported on code.google.com by [email protected] on 13 Mar 2011 at 1:55

Short-circuiting rules should be honored during reduction steps

This applies to IfThenElse expressions which encompass AndAlso and OrElse 
derived patterns.

For example, instead of

> <@ if 3 + 2 = 5 then "hello" + "world" else "goodbye" + "world" @> |> 
unquote;;

if 3 + 2 = 5 then "hello" + "world" else "goodbye" + "world"
if 5 = 5 then "helloworld" else "goodbyeworld"
if true then "helloworld" else "goodbyeworld"
"helloworld"

We should have

> <@ if 3 + 2 = 5 then "hello" + "world" else "goodbye" + "world" @> |> 
unquote;;

if 3 + 2 = 5 then "hello" + "world" else "goodbye" + "world"
if 5 = 5 then "helloworld" else "goodbye" + "world"
if true then "helloworld" else "goodbye" + "world"
"helloworld"

Original issue reported on code.google.com by [email protected] on 30 Jun 2011 at 7:52

Decompiler Bug or F# Quotation Bug: exception with certain list NewUnionCases

This appears to be due to the "local optimization" of list union cases which 
aren't literal constructions:

> let x = [1;1;1];;

val x : int list = [1; 1; 1]

> <@ 1::x @> |> source;;
System.Exception: local list cons case not expected: Value (1)
   at [email protected](String message) in C:\Users\Stephen\Documents\Visual Studio 2010\Projects\Unquote\Unquote\Sprint.fs:line 400
   at Microsoft.FSharp.Core.PrintfImpl.go@512-3[b,c,d](String fmt, Int32 len, FSharpFunc`2 outputChar, FSharpFunc`2 outa, b os, FSharpFunc`2 finalize, FSharpList`1 args, Int32 i)
   at Microsoft.FSharp.Core.PrintfImpl.run@510[b,c,d](FSharpFunc`2 initialize, String fmt, Int32 len, FSharpList`1 args)
   at Microsoft.FSharp.Core.PrintfImpl.capture@529[b,c,d](FSharpFunc`2 initialize, String fmt, Int32 len, FSharpList`1 args, Type ty, Int32 i)
   at <StartupCode$FSharp-Core>[email protected](T1 inp)
   at FSI_0157.Swensen.Unquote.Sprint.sprint@392-394(Int32 context, FSharpExpr expr) in C:\Users\Stephen\Documents\Visual Studio 2010\Projects\Unquote\Unquote\Sprint.fs:line 398
   at <StartupCode$FSI_0171>.$FSI_0171.main@()
Stopped due to error

Original issue reported on code.google.com by [email protected] on 27 Mar 2011 at 1:58

Refactoring with breaking changes for more consistent naming in API

There are a handful of API naming breaking changes we should like to undertake 
for the upcoming Unquote version 2.0.0 release where we feel the benefit 
outweighs the cost, the first is the most significant
  1. Rename `Swensen.Unquote.Operators.source` and the extension method `Expr.ToSource()` to `Swensen.Unquote.Operators.decompile` and `Expr.Decompile()` respectively. We feel this will be a more consistent renaming among the `eval` and `reduce` operators and will not impact folks who are only using Unquote for its main intended purpose as a unit testing assertion library.
  2. Consolidate `Swensen.Unquote.ExprExt` and `Swensen.Unquote.TypeExt` into `Swensen.Unquote.Extensions`. Since these are all AutoOpen modules, if they the two being consolidated were only used in that fashion, then this will have no effect on users. And also this will have no effect on users only using Unquote for its unit testing features.
  3. Rename `Swensen.Unquote.Operators.Private` to `Swensen.Unquote.Operators.Internal` and mark it with the `System.Obsolete` so that it is hidden from Visual Studio IntelliSense (the EditorBrowsable attribute not being honored by F#, a recently filed bug: http://stackoverflow.com/questions/6527141/is-it-possible-to-mark-a-module-function-as-hidden-from-intellisense-discovery/6527933#6527933). This shouldn't effect any users as the module was never intended to be used publicly and is only public because due to references by other legitimately public inlined operators.  

Original issue reported on code.google.com by [email protected] on 30 Jun 2011 at 3:21

Bug: op_LogicalNot is not supported

> <@ (~~~) 1 @> |> eval;;
System.NotSupportedException: Specified method is not supported.

Server stack trace: 
   at Microsoft.FSharp.Core.Operators.op_LogicalNot[T](T value)

Exception rethrown at [0]: 
   at Swensen.Unquote.Evaluation.eval(FSharpList`1 env, FSharpExpr expr) in C:\Users\Stephen\Documents\Visual Studio 2010\Projects\Unquote\code\Unquote\Evaluation.fs:line 260
   at Swensen.Unquote.Extensions.Expr`1.Eval[T](FSharpExpr`1 ) in C:\Users\Stephen\Documents\Visual Studio 2010\Projects\Unquote\code\Unquote\Extensions.fs:line 25
   at <StartupCode$FSI_0034>.$FSI_0034.main@()
Stopped due to error

Original issue reported on code.google.com by [email protected] on 11 Jul 2011 at 3:49

Bug: left shift and right shift operators fail with primitive operands of different types

e.g.

> <@ 23L <<< 1 @> |> eval;;
System.NotSupportedException: Specified method is not supported.
   at Swensen.Unquote.DynamicOperators.invokeBinOp(String name, Type aty, Type bty, Object x, Object y)
   at Swensen.Unquote.Evaluation.eval(FSharpList`1 env, FSharpExpr expr)
   at Swensen.Unquote.Extensions.Expr`1.Eval[T](FSharpExpr`1 )
   at <StartupCode$FSI_0005>.$FSI_0005.main@()
Stopped due to error

Original issue reported on code.google.com by [email protected] on 11 Jul 2011 at 3:37

Decompiler Feature Request: re-sugar list and array range expressions

e.g., all of the following should be re-sugared:

> <@ [1..5] @> |> unquote;;

Seq.toList (seq {1..5})
Seq.toList (seq seq [1; 2; 3; 4; ...])
Seq.toList seq [1; 2; 3; 4; ...]
[1; 2; 3; 4; 5]

val it : unit = ()
> <@ [1..5..10] @> |> unquote;;

Seq.toList (seq {1..5..10})
Seq.toList (seq seq [1; 6])
Seq.toList seq [1; 6]
[1; 6]

val it : unit = ()
> <@ [|1..10|] @> |> unquote;;

Seq.toArray (seq {1..10})
Seq.toArray (seq seq [1; 2; 3; 4; ...])
Seq.toArray seq [1; 2; 3; 4; ...]
[|1; 2; 3; 4; 5; 6; 7; 8; 9; 10|]

val it : unit = ()
> <@ [|1..5..10|] @> |> unquote;;

Seq.toArray (seq {1..5..10})
Seq.toArray (seq seq [1; 6])
Seq.toArray seq [1; 6]
[|1; 6|]

val it : unit = ()

Original issue reported on code.google.com by [email protected] on 1 Apr 2011 at 3:58

Support NewDelegate expressions

e.g., currently falls back on ToString:

> source <@ (System.Func<int,int>(fun i -> i + 1)) @>;;
val it : string =
  "NewDelegate (System.Func`2[[System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089],[System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]],
             i,
             Call (None, Int32 op_Addition[Int32,Int32,Int32](Int32, Int32),
                   [i, Value (1)]))"


Original issue reported on code.google.com by [email protected] on 27 Feb 2011 at 5:06

Decompiler Feature Request: re-sugar Lambdas with tupled args

Instead of 

> <@ fun x (g, f) -> 3 @> |> source;;
val it : string =
  "fun x tupledArg -> let g = (let item1,_ = tupledArg in item1) in let f = (let _,item2 = tupledArg in item2) in 3"

should be

> <@ fun x (g,f) -> 3 @> |> source;;
val it : string = "fun x (g, f) -> 3"



Original issue reported on code.google.com by [email protected] on 24 Mar 2011 at 12:41

Fully support VarSet, FieldSet, and PropertySet expressions

While these have been implemented in the decompiler for some time, they were 
not supported by PowerPack's Eval so crippled further support.  However, having 
implemented our own eval with support for all these kinds of set expressions, 
we are able to advance our overall support in the reduction and testing realm.

Original issue reported on code.google.com by [email protected] on 5 Jul 2011 at 3:44

Reduction Feature Request: do not reduce expressions which return Lambda Values

Related to issue 23, Let(_,x,Lambda(_)) when x |> isReduced should be 
considered reduced, since we don't want to see generated lambda names sprinted

So instead of

> unquote <@ 23 + 3 + 4 + 1, let x = 2 + 3 in (fun j -> j + x) @>;;
> 
(23 + 3 + 4 + 1, (let x = 2 + 3 in fun j -> j + x))
(26 + 4 + 1, (let x = 5 in fun j -> j + x))
(30 + 1, <fun:ToFSharpFunc@3051-1>)
(31, <fun:ToFSharpFunc@3051-1>)

should be

> unquote <@ 23 + 3 + 4 + 1, let x = 2 + 3 in (fun j -> j + x) @>;;
> 
(23 + 3 + 4 + 1, (let x = 2 + 3 in fun j -> j + x))
(26 + 4 + 1, (let x = 5 in fun j -> j + x))
(30 + 1, (let x = 5 in fun j -> j + x))
(31, (let x = 5 in fun j -> j + x))

Original issue reported on code.google.com by [email protected] on 22 Mar 2011 at 2:13

Decompiler Feature Request: support PropertySet expressions

Low priority since can't be reduced by current power pack Eval implementation. 
But we already support VarSet and FieldSet expressions, so would be good to be 
complete, and also future ready (I'm betting next major power pack release will 
have a better Eval implementation).

Original issue reported on code.google.com by [email protected] on 23 Mar 2011 at 4:37

Further support for partial application lambda re-sugaring by supporting coerced vars

The current re-sugaring is ad-hoc and we can improve it for example, given

    let f (x:obj) (y:obj) = x |> string

Before this fix the following expression decompilation

    <@ 2 |> f "2" @> |> decompile

would be

    "2 |> let x = "2" in fun y -> f x y"

due to coercion throwing off our pattern matching. But after this fix we'll have

    "2 |> f "2""

Original issue reported on code.google.com by [email protected] on 5 Jul 2011 at 3:22

Decompiler Bug: empty list error

Introduced while fixing issue #4:

> source <@ [] @>;;
System.Exception: unexpected list union case
   at FSI_0004.Swensen.Unquote.Sprint.isLiteralConstruction@312(FSharpExpr _arg1) in C:\Users\Stephen\Documents\Visual Studio 2010\Projects\Unquote\Unquote\Sprint.fs:line 318
   at [email protected](Int32 context, FSharpExpr expr) in C:\Users\Stephen\Documents\Visual Studio 2010\Projects\Unquote\Unquote\Sprint.fs:line 320
   at <StartupCode$FSI_0034>.$FSI_0034.main@()
Stopped due to error

Original issue reported on code.google.com by [email protected] on 20 Feb 2011 at 2:46

Support TryWith expressions

For example,

source <@ try (null:string).Length with | e -> -1 @>

produces

TryWith (PropertyGet (Some (Value (<null>)), Int32 Length, []), e, Value (1), e,
         Value (-1))

Original issue reported on code.google.com by [email protected] on 15 Feb 2011 at 1:34

Make smarter choices about decompilation of AndOr and OrElse expressions which can't be differentiated

Quotations involving && or || operators are captured as IfThenElse expressions. 
DerivedPatterns includes two patterns, AndAlso and OrElse which attempt to 
reverse engineer this form. But there are occasions when it doesn't get it 
right and specifically when a given expression matches both patterns.  For 
example

  1. false || false and false && true
  2. true || false and true && true

But we can make smarter decompilation choices based on short-circuiting 
knowledge. 

In the first case, we know "false || false" would be a better choice since 
"<expr> && true" is equivalent to just "<expr>" so "<expr> && true" with the 
literal "true" on the right hand side is an unlikely actual expression.

Similarly, in the second case, we know "true && true" is a better choice than 
"true || false".

Original issue reported on code.google.com by [email protected] on 4 Jul 2011 at 2:09

Decompiler Feature Request: support TupleGet expressions

Example 1:

source <@ let a,b = (1,2) in a,b @>

produces

let patternInput = (1, 2) in let b = TupleGet (patternInput, 1) in let a = 
TupleGet (patternInput, 0) in (a, b)

(notice that patternInput expressions are a special case to be addressed at 
another time).

Example 2:

let t = (1,2)
source <@ let a,b = t in a,b @>

produces

let b = TupleGet (PropertyGet (None, System.Tuple`2[System.Int32,System.Int32] 
t, []), 1) in let a = TupleGet (PropertyGet (None, 
System.Tuple`2[System.Int32,System.Int32] t, []), 0) in (a, b)

Original issue reported on code.google.com by [email protected] on 15 Feb 2011 at 1:25

Type.FSharpName bug: can't handle generic type definiations

For example,

> [3].GetType().GetGenericTypeDefinition().FSharpName;;
System.ArgumentNullException: Value cannot be null.
Parameter name: input
   at System.Text.RegularExpressions.Regex.Match(String input)
   at FSI_0038.Swensen.RegexUtils.|CompiledMatch|_|(String pattern, String str) in C:\Users\Stephen\Documents\Visual Studio 2010\Projects\Unquote\Unquote\RegexUtils.fs:line 28
   at FSI_0040.Swensen.Unquote.Sprint.sprintSig@169-20(Int32 context, Type t) in C:\Users\Stephen\Documents\Visual Studio 2010\Projects\Unquote\Unquote\Sprint.fs:line 172
   at FSI_0040.Swensen.Unquote.Sprint.sprintSig@169-20(Int32 context, Type t) in C:\Users\Stephen\Documents\Visual Studio 2010\Projects\Unquote\Unquote\Sprint.fs:line 186
   at <StartupCode$FSI_0058>.$FSI_0058.main@()
Stopped due to error

Original issue reported on code.google.com by [email protected] on 17 Feb 2011 at 3:48

Bug: op_UnaryPlus on int16 overlooked

Found bug:

<@ (~+) 3s @> |> eval;;

fails. I am currently refactoring native numeric and conversion op 
implementations so that there is more code reuse and less change for these 
kinds of typo / oversight bugs.


Original issue reported on code.google.com by [email protected] on 10 Jul 2011 at 9:20

Decompiler Enhancement: re-sugar tuple let expressions

e.g. the following is currently incredibly verbose:

    source <@ let a,b = (1,2) in a,b @> =? 
        "let patternInput = (1, 2) in let b = (let _,item2 = patternInput in item2) in let a = (let item1,_ = patternInput in item1) in (a, b)"

Original issue reported on code.google.com by [email protected] on 27 Mar 2011 at 7:01

Implement custom reflection-based evaluation engine

This will give us many benefits over dependence on PowerPack's quotation 
evaluation
  1. Faster
  2. Simpler and therefore less bug prone
  3. Allow us to support expressions which PowerPack doesn't / can't support like VarSet, PropertySet, FieldSet, and ForIntegerLoop
  4. Remove dependency on FSharp.PowerPack.Linq

Original issue reported on code.google.com by [email protected] on 30 Jun 2011 at 1:48

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.