symbols.java

来自「A framework written in Java for implemen」· Java 代码 · 共 72 行

JAVA
72
字号
package gnu.commonlisp.lang;import gnu.mapping.*;import gnu.lists.*;/** Support for Lisp Symbols. * The special symbol `nil' is actually the value gnu.lists.LList.Empty. */public class Symbols{  private Symbols ()  {  }  public static boolean isSymbol(Object val)  {    return val instanceof String || val == Lisp2.FALSE      || val instanceof Symbol;  }  public static boolean isBound(Object sym)  {    if (sym == Lisp2.FALSE)      return true;    Environment env = Environment.getCurrent();    Symbol symbol;    if (sym instanceof Symbol)      symbol = (Symbol) sym;    else      symbol = env.defaultNamespace().lookup((String) sym);    return symbol != null && env.isBound(symbol);  }    public static Symbol getSymbol(Environment env, Object sym)  {    if (sym == Lisp2.FALSE)      sym = "nil";    return sym instanceof Symbol ? (Symbol) sym      : env.defaultNamespace().getSymbol((String) sym);  }  public static Symbol getSymbol(Object sym)  {    if (sym == Lisp2.FALSE)      sym = "nil";    return sym instanceof Symbol ? (Symbol) sym      : Namespace.getDefaultSymbol((String) sym); // FIXME  }  public static Object getPrintName(Object sym)  {    return sym == Lisp2.FALSE ? "nil"      : Lisp2.getString(((Symbol) sym).getName());  }  public static Object getFunctionBinding (Object symbol)  {    return Environment.getCurrent().getFunction(getSymbol(symbol));  }  public static Object getFunctionBinding (Environment environ, Object symbol)  {    return environ.getFunction(getSymbol(symbol));  }  public static void setFunctionBinding (Environment environ,					 Object symbol, Object newValue)  {    environ.put(getSymbol(symbol), EnvironmentKey.FUNCTION, newValue);  }}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?