Skip to content
Dmitry Ponyatov edited this page Aug 19, 2019 · 2 revisions

Cmd

команды Cmd выполняют внутреннюю функцию, определенную на Python, передавая ей контекст в качестве параметра:

class Cmd(Active):
    def __init__(self,F):
        Active.__init__(self, F.__name__)
        self.fn = F
    def eval(self,ctx):
        self.fn(ctx)

Для привязки функций на языке реализации metaL к среде выполнения используются переопределенные операторы:

class Context(Active):
    def __lshift__(self,F):
        if callable(F): return self << Cmd(F)
        else: return Active.__lshift__(self, F)
    def __setitem__(self,key,F):
        if callable(F): self[key] = Cmd(F) ; return self
        else: return Active.__setitem__(self,key,F)
def BYE(ctx): sys.exit(0)
glob << BYE

glob['NOP'] = lambda ctx: None
<context:metaL> @7fcc45916a90 #0
	NOP = <cmd:<lambda>> @7fcc45916ba8 #1
	BYE = <cmd:BYE> @7fcc45916b38 #1
Clone this wiki locally