caml-list - the Caml user's mailing list
 help / color / mirror / Atom feed
* Vyper source available vi CVS at SourceForge
@ 2000-02-15  4:01 skaller
  0 siblings, 0 replies; only message in thread
From: skaller @ 2000-02-15  4:01 UTC (permalink / raw)
  To: caml-list

The full sources for my Vyper interpreter are now available at
SourceForge via CVS. Vyper is now licenced LGPL. Developers are urgently
required for library development, especially python compatibility
modules.
[No documentation is available yet -- I'm still trying to figure out
how to get it onto source forge]

Vyper is written in Ocaml 3.00 (http://caml.inria.fr).

Project Full Name:  Vyper
Project Unix Name:  Vyper
CVS Server:         cvs.Vyper.sourceforge.net
Shell/Web Server:   Vyper.sourceforge.net

The latest version of Vyper contains functional style pattern matching,
as illustrated by the code below: matching includes constants, ranges,
regular expressions, tuples and lists, when guards, as names, 
and type checks.

Vyper also now supports anonymous functions with the <: :> brackets:

----------------- anonymous function examples -------------------
xx = <: return 1; :>

x = 1 + <:
  return 10
:> + 100 
print x

x = 1 + ( 1 - <:
  return 10
:> + 100 ) + 77
print x

a = 2
b = <: a = 1; return a :>
print 'a =',a

with:
  x = "Sum to 10 is " + <:
    s = ""
    for i in range(10): 
      s = s + str(i)+", "
    return s
  :> + " so there" + <:
    return <:
      return " max" 
    :>
  :> * 2
do:
  x = x

print x

z = 1 + <: q =5; return 1 :> + 0

print z
----------------- matching examples -----------------------------
for i in range(0,4):
  match i:
    case 1: print 1
    case "2": print 2
    else: print "no"
print "should be 1"

match "2":
  case 1: print 1
  case "2": print 2
  else: print "no"
print "should be 2"

y=1
x = 44
match "fred":
  case x: y=2; x=x; print 'x=',x
  case 1: print 1
  case "2": print 2
  else: print "no"
print 'y=',y, 'x=',x

match 1:
  case 1 when 0: print 'WHEN 0 <never!>'
  case 1 when 1: print 'WHEN 1 <always>'

match 1:
  case 1 as x: print x
  else: print 'NO MATCH'


match (1,2):
  case (1,2): print "Tuple Matched"
  else: print "Tuple match failed"

match (1,2):
  case (x,y): print "Tuple Matched, x=",x,"y=",y
  else: print "Tuple match failed"

match [1,2]:
  case [x,y]: print "List Matched, x=",x,"y=",y
  else: print "list match failed"


match 50:
  case 1 .. 2: print "1..2"
  case 30 .. 60: print "30..60 - OK!"

match "q":
  case "a" .. "z": print "letter!"
  else: print "Not letter?"


match (1,2,(3,4)):
  case ((x,y,(a,b) as z) as e) when x==1:
    print x,y,z,a,b,z,e
  else: print "Failed!"

match 1:
  case x when x == 1 and 1 == 1:
    print "AND MATCH"
  else: print "Failed!"

match 1:
  case x when x == 0 or 1 == 1:
    print "OR MATCH"
  else: print "Failed!"


import types
match 1:
  case x ! types.IntType:
    print "TYPE MATCH"
  else: print "Failed!"


match "Hello":
  case regexp "He(..)o" (x,y): print 'Matched ',x,y
  else: print  "Regexp Failed"


-- 
John (Max) Skaller, mailto:skaller@maxtal.com.au
10/1 Toxteth Rd Glebe NSW 2037 Australia voice: 61-2-9660-0850



^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2000-02-16  9:39 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2000-02-15  4:01 Vyper source available vi CVS at SourceForge skaller

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).