IP Library Granted Patent US 9,436,581
Granted Patent B2
US 9,436,581 · App. 14/734,007 · Granted Sep 6, 2016

Dynamic lazy type system

View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 9,436,581
App. No.
14/734,007
Granted
Sep 6, 2016
Kind
B2
Abstract

A dynamic, lazy type system is provided for a dynamic, lazy programming language. Consequently, programs can benefit from runtime flexibility and lightweight notation in combination with benefits afforded by a substantial type system.

Claims (63)

1. A system, comprising:

a processor coupled to a memory, the processor configured to perform component execution, namely, configured to execute at least one computer-executable component which is stored in the memory;

a type system having a plurality of types, wherein type enforcement using a constraint is performed at runtime; and

an analysis component configured to analyze a value and a type which defines allowable values, in order to determine if the constraint provided by the type holds, wherein at least one allowable value is specified using a “where” clause; and

an assignment component configured to automatically identify the type for the value during runtime.

2. The system of claim 1 , wherein the system is configured to produce an error during runtime in response to the analysis component determining that the constraint does not hold.

3. The system of claim 1 , wherein the analysis component is configured to determine whether the constraint is satisfied when a function is called in the application program.

4. The system of claim 1 , wherein at least one allowable value is within allowable values specified by a predicate.

5. The system of claim 1 , wherein at least one allowable value is evaluated against at least a portion of another type.

6. The system of claim 1 , wherein at least one brand is associated with the type as a constraint.

7. The system of claim 1 , wherein the type itself is represented as a value.

8. The system of claim 1 , wherein the system is configured to employ at least one type flow function to infer or compute a predicted result type of an application program function based on actual argument types in a call to the application program function, as opposed to declared parameter types.

9. A method, comprising:

employing at least one processor configured to execute computer-executable instructions stored in memory to perform the following acts during a runtime of an application program:

analyzing (i) a value and (ii) a type which defines allowable values, thereby determining whether a constraint provided by the type holds;

in response to determining the constraint provided by the type holds, automatically inferring the type; and

in response to determining the constraint provided by the type is not satisfied, producing an error during the application program runtime;

wherein the method comprises at least two of the following performed during the application program runtime:

assigning types to computed values in the application program;

determining whether the constraint is satisfied when a function is called in the application program;

employing at least one type flow function to infer or compute a predicted result type of an application program function based on argument types in a call to the application program function;

evaluating at least one allowable value against at least a portion of the type.

10. The method of claim 9 , wherein the analyzing and determining are performed lazily in order to evaluate an expression of the application program during the runtime.

11. The method of claim 9 , wherein the method is further characterized in that at least one allowable value is within allowable values specified by a predicate in the application program.

12. The method of claim 9 , wherein the method is further characterized in that at least one allowable value is specified using a “where” clause in the application program.

13. The method of claim 9 , wherein the method further comprises at least one of the following:

associating at least one brand with the type as a constraint;

creating the type dynamically during the application program runtime.

14. A computer-readable storage medium having instructions stored thereon that enables at least one processor to perform the following acts:

lazily analyzing (i) a value and (ii) a type which defines allowable values, thereby determining whether a constraint provided by the type holds; and

identifying the type for the value during an application program runtime in response to determining that the constraint holds;

wherein the acts further comprise at least one of the following performed during the application program runtime:

determining whether the constraint is satisfied when a function is called in the application program;

employing at least one type flow function to infer or compute a predicted result type of an application program function based on argument types in a call to the application program function.

15. The computer-readable storage medium of claim 14 , wherein the acts further comprise at least one of the following performed during the application program runtime:

determining that the value is within allowable values specified by a predicate in the application program;

determining that the value is within allowable values specified using a “where” clause in the application program.

16. The computer-readable storage medium of claim 14 , wherein the acts further comprise associating at least one brand with the type as a constraint.

17. The computer-readable storage medium of claim 14 , wherein the acts further comprise treating the type as a first-class value during the application program runtime.

18. A system, comprising:

a processor coupled to a memory, the processor configured to perform component execution, namely, configured to execute at least one computer-executable component which is stored in the memory;

a type system having a plurality of types, wherein type enforcement using a constraint is performed at runtime; and

an analysis component configured to analyze a value and a type which defines allowable values, in order to determine if the constraint provided by the type holds; and

an assignment component configured to automatically identify the type for the value during runtime;

wherein the system is configured to employ at least one type flow function to infer or compute a predicted result type of an application program function based on actual argument types in a call to the application program function, as opposed to declared parameter types.

19. The system of claim 18 , wherein the system is configured to produce an error during runtime in response to the analysis component determining that the constraint does not hold.

20. The system of claim 19 , wherein at least one allowable value is within allowable values specified by a predicate.

21. A method, comprising:

employing at least one processor configured to execute computer-executable instructions stored in memory to perform the following acts during a runtime of an application program:

analyzing (i) a value and (ii) a type which defines allowable values, thereby determining whether a constraint provided by the type holds;

in response to determining the constraint provided by the type holds, automatically inferring the type; and

in response to determining the constraint provided by the type is not satisfied, producing an error during the application program runtime;

wherein the method is further characterized in that at least one allowable value is specified using a “where” clause in the application program.

22. The method of claim 21 , wherein the method comprises determining whether the constraint is satisfied when a function is called in the application program.

23. The method of claim 21 , wherein the method comprises evaluating at least one allowable value against at least a portion of another type.

24. A computer-readable storage medium having instructions stored thereon that enables at least one processor to perform the following acts:

lazily analyzing (i) a value and (ii) a type which defines allowable values, thereby determining whether a constraint provided by the type holds; and

identifying the type for the value during an application program runtime in response to determining that the constraint holds; and

wherein the acts further comprise at least one of the following performed during the application program runtime:

determining that the value is within allowable values specified by a predicate in the application program;

determining that the value is within allowable values specified using a “where” clause in the application program.

25. The computer-readable storage medium of claim 24 , wherein the type itself is represented as a value.

26. The computer-readable storage medium of claim 24 , wherein the acts further comprise associating at least one brand with the type as a constraint.

Assignments (2)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 9, 2015
From: CHRISTENSEN, ERIK; COULSON, MICHAEL; SZYPERSKI, CLEMENS; HUGHES, GREGORY
To: MICROSOFT CORPORATION
Reel/Frame 035806/0295 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 9, 2015
From: COULSON, MICHAEL; HUGHES, GREGORY; SZYPERSKI, CLEMENS
To: MICROSOFT TECHNOLOGY LICENSING, LLC
Reel/Frame 035858/0485 →