2.0.102 • Published 3 months ago

occam-furtle v2.0.102

Weekly downloads
-
License
MIT, Anti-996
Repository
github
Last release
3 months ago

Occam Furtle

Occam's Furtle language.

Contents

Introduction

Furtle is a dynamically but nonetheless strictly typed, pure functional language meant primarily for traversing parse trees. It is called from Nominal thus...

Rule (FreeVariable)
  Premise
    @isVariableFree(u, P)
  Conclusion
    u is free in P

...and looks like, for example:

String variableNameFromTermNode(Node termNode) {
  Node variableNameTerminalNode = nodeQuery(termNode, /term/variable/@name);
  
  String variableName = 

    If (variableNameTerminalNode != null) {
      { String content As variableName } = variableNameTerminalNode;
    
      Return variableName;
    } 

    Else 
      ""
  ;
  
  Return variableName;
}

Despite its strict typing it has a somewhat JavaScripty feel. It supports array and object destructuring, for example. It also supports "some", "every" and "reduce" functionality as well as ternaries:

String boundVariableNameFromStatementChildNodes(Nodes statementChildNodes) {
  [ Node terminalNode ] = statementChildNodes;

  { String content } = terminalNode;

  String boundVariableName = 

    If ((content == "∀") || (content == "∃")) {
      [ _, Node argumentNode ] = statementChildNodes;

      String boundVariableName = boundVariableNameFromArgumentNode(argumentNode);
  
      Return boundVariableName;
    }
    Else
     ""
  ;

  Return boundVariableName;
}

It is nascent at this stage, but is expected to grow.

Installation

With npm:

npm install occam-furtle

You can also clone the repository with Git...

git clone https://github.com/djalbat/occam-furtle.git

...and then install the dependencies with npm from within the project's root directory:

npm install

Example

The example runs directly on Node:

node example.js

The Free and bound variables.ftl file in the example/ directory can be changed and the example can be rebuilt, see below. Obviously one thing to try is changing the value of the free variable.

Building

Automation is done with npm scripts, have a look at the package.json file. The pertinent commands are:

npm run build-debug
npm run watch-debug

Contact

  • james.smith@djalbat.com
2.0.102

3 months ago

2.0.101

3 months ago

2.0.100

3 months ago

2.0.99

4 months ago

2.0.98

4 months ago

2.0.97

4 months ago

2.0.96

4 months ago

2.0.95

4 months ago

2.0.94

4 months ago

2.0.93

4 months ago

2.0.92

4 months ago

2.0.91

4 months ago

2.0.90

4 months ago

2.0.89

4 months ago

2.0.88

4 months ago

2.0.86

4 months ago

2.0.82

4 months ago

2.0.80

4 months ago

2.0.78

4 months ago

2.0.77

4 months ago

2.0.76

4 months ago

2.0.75

4 months ago

2.0.74

4 months ago

2.0.73

4 months ago

2.0.71

4 months ago

2.0.69

4 months ago

2.0.68

4 months ago

2.0.67

4 months ago

2.0.66

4 months ago

2.0.65

4 months ago

2.0.64

4 months ago

2.0.63

4 months ago

2.0.62

4 months ago

2.0.61

4 months ago

2.0.60

5 months ago

2.0.59

5 months ago

2.0.58

5 months ago

2.0.57

5 months ago

2.0.56

5 months ago

2.0.55

5 months ago

2.0.54

5 months ago

2.0.53

5 months ago

2.0.52

5 months ago

2.0.51

5 months ago

2.0.50

5 months ago

2.0.49

5 months ago

2.0.48

5 months ago

2.0.47

5 months ago

2.0.46

5 months ago

2.0.45

5 months ago

2.0.44

5 months ago

2.0.43

5 months ago

2.0.42

5 months ago

2.0.41

5 months ago

2.0.40

5 months ago

2.0.39

5 months ago

2.0.38

5 months ago

2.0.37

5 months ago

2.0.36

5 months ago

2.0.35

5 months ago

2.0.34

5 months ago

2.0.33

6 months ago

2.0.32

6 months ago

2.0.31

6 months ago

2.0.30

6 months ago

2.0.29

6 months ago

2.0.28

6 months ago

2.0.27

6 months ago

2.0.26

6 months ago

2.0.25

6 months ago

2.0.24

6 months ago

2.0.23

6 months ago

2.0.22

6 months ago

2.0.21

6 months ago

2.0.20

6 months ago

2.0.19

6 months ago

2.0.18

6 months ago

2.0.17

6 months ago

2.0.16

6 months ago

2.0.15

6 months ago

2.0.14

6 months ago

2.0.13

6 months ago

2.0.12

6 months ago

2.0.11

6 months ago

2.0.10

6 months ago

2.0.9

6 months ago

2.0.8

6 months ago

2.0.7

6 months ago

2.0.6

6 months ago

2.0.5

6 months ago

2.0.4

6 months ago

2.0.3

6 months ago

2.0.1

6 months ago

1.0.56

6 months ago

1.0.55

6 months ago

1.0.54

6 months ago

1.0.53

6 months ago

1.0.52

6 months ago

1.0.51

6 months ago

1.0.50

6 months ago

1.0.49

6 months ago

1.0.48

6 months ago

1.0.47

6 months ago

1.0.46

6 months ago

1.0.45

6 months ago

1.0.44

6 months ago

1.0.43

6 months ago

1.0.42

6 months ago

1.0.40

6 months ago

1.0.38

7 months ago

1.0.36

7 months ago

1.0.35

7 months ago

1.0.34

7 months ago

1.0.33

7 months ago

1.0.32

7 months ago

1.0.31

7 months ago

1.0.30

7 months ago

1.0.29

7 months ago

1.0.28

7 months ago

1.0.27

7 months ago

1.0.26

7 months ago

1.0.25

7 months ago

1.0.24

7 months ago

1.0.23

7 months ago

1.0.22

7 months ago

1.0.21

7 months ago

1.0.20

7 months ago

1.0.19

7 months ago

1.0.18

7 months ago

1.0.17

7 months ago

1.0.16

7 months ago

1.0.15

7 months ago

1.0.14

7 months ago

1.0.13

7 months ago

1.0.12

7 months ago

1.0.11

7 months ago

1.0.10

7 months ago

1.0.9

7 months ago

1.0.8

7 months ago

1.0.7

7 months ago

1.0.6

7 months ago

1.0.5

7 months ago

1.0.4

7 months ago

1.0.3

7 months ago

1.0.2

7 months ago

1.0.1

7 months ago

1.0.0

7 months ago

0.0.2

7 months ago

0.0.1

7 months ago