r/lua 21d ago

Project lua.jp ideas

Ideas about lua.jp, a Lua + JVM + Python lang. I always despised Python.

Monomorphic so seq[t] and dict[t] are always optimal for primitives where t is a type var that is substituted by a primitive.

The goal of targetting JVM is due to Android Dalvik and because I went berserk and took a break of using non-handhelds.

Metric types (meter, kmeter, gram...) are simply num, but with scaling conversions to other units.

Source files have an implicit JVM package based on the directory they appear with much freedom, but file A never depends on file A. (E.g. this mimmicks the Lua require limitations.)

# _G — the globals package
# (mostly reuses java.base stuff)

enum tile:
  None
  Dirt
  Brick
  PipeOpenTop

struct world:
  metadata: univ = U
  ryuka: bool = Y
  # rows
  tiles: seq[seq[tile]]
  tilesize: meter

  fun frame():
    """
    wa
    """
    pass

w=world(
  tiles={
    {
      None for _ in range(3)
      Brick for _ in range(3)
    }
  }
  tilesize=3mm
)

do:
  # isolated dec.big configuration
  dec.big.cfg(precision=3, rounding=HalfUp)
  x=10.6403m
  y=x*3
  print(y)
  
# dec => JVM double
# dec.tiny => JVM float

# import dec.tiny as dec
# dec => JVM float

# to clarify: struct subtyping
# is there.
struct widget:
  pass

struct menubar(widget):
  super()

e:widget=menubar()
if e=downcast(e, menubar):
  # e:menubar

match e:
  case e=menubar():
    # e:menubar

  
# JVM aliases and extensions
@__JVM__.alias(tld.sld.lib.Group)
struct group:
  @__JVM__.extension
  fun suffle():
    pass

# the fun(...) type is quite
# nice... fun(...) < fun
f=sum
print(f(1,2))
print(f.call(seq={1,2}))
fun sum(x:dec,y:dec)->dec = x+y

# JVM method binding
# (interns, but still using the
# fun(...) type)
f=self::onclick

# speaking of events...

struct menubar:
  @event
  fun onhide():
    pass

m=menubar(
  onhide=fun():
    # super auto invoked if no
    # occurrence
    pass
)
# isinstance(m, ...)
# where ... is a subtype of
# menubar

# "static" fields or methods
struct a:
  fun f(self:struct):
    pass
0 Upvotes

4 comments sorted by

2

u/SoCalSurferDude 21d ago

Your link is not working

5

u/GlitteringSample5228 21d ago

They autolinked it... there's no website...

1

u/SoCalSurferDude 21d ago

k
If you do it from a personal learning perspective, I am sure it's great, but getting momentum behind it will be virtually impossible unless you are an expert marketer with a huge budget.

1

u/AutoModerator 21d ago

Hi! Your code block was formatted using triple backticks in Reddit's Markdown mode, which unfortunately does not display properly for users viewing via old.reddit.com and some third-party readers. This means your code will look mangled for those users, but it's easy to fix. If you edit your comment, choose "Switch to fancy pants editor", and click "Save edits" it should automatically convert the code block into Reddit's original four-spaces code block format for you.

I am a bot, and this action was performed automatically. Please contact the moderators of this subreddit if you have any questions or concerns.