public class FnForm implements SpecialForm {

    @Override
    public LispObject call(List<LispObject> args, Interpreter.Evaluator evaluator) {
        // Obsługa parametrów.
        List<Sym> argList = new LinkedList<>();
        if (args.get(0) instanceof Vec) {
            Vec argVec = (Vec) args.get(0);
            for (LispObject arg : argVec) {
                if (arg instanceof Sym) {
                    argList.add((Sym) arg);
                } else {
                    // Nazwy argumentów powinny być symbolami.
                }
            }
        } else {
            // Pierwszym argumentem powinien być wektor.
        }

        List<LispObject> body = args.subList(1, args.size());
        // Ciało funkcji.
        return new Function(argList, body, evaluator.getScope());
    }
}

@@ -221,54 +221,8 @@
 ();%0A
-        if (args.get(0) instanceof Vec) %7B%0A    
     
@@ -257,20 +257,16 @@
 get(0);%0A
-    
         
@@ -313,286 +313,67 @@
     
-    if (arg instanceof Sym) %7B%0A                    argList.add((Sym) arg);%0A                %7D else %7B%0A                    // Nazwy argument%C3%B3w powinny by%C4%87 symbolami.%0A                %7D%0A            %7D%0A        %7D else %7B%0A            // Pierwszym argumentem powinien by%C4%87 wektor.%0A        %7D%0A
+argList.add((Sym) arg);%0A        %7D%0A        // Cia%C5%82o funkcji.
 %0A   
@@ -435,34 +435,8 @@
 ));%0A
-        // Cia%C5%82o funkcji.%0A
     

simplify fn form