diff --git a/com.oracle.truffle.r.engine/src/com/oracle/truffle/r/engine/RRuntimeASTAccessImpl.java b/com.oracle.truffle.r.engine/src/com/oracle/truffle/r/engine/RRuntimeASTAccessImpl.java
index 1b4a5a81ea1fe3239dd7dc19592a38a19cc95f4a..2a3078a825b3a324ae7c8204312aaed1bb3f1139 100644
--- a/com.oracle.truffle.r.engine/src/com/oracle/truffle/r/engine/RRuntimeASTAccessImpl.java
+++ b/com.oracle.truffle.r.engine/src/com/oracle/truffle/r/engine/RRuntimeASTAccessImpl.java
@@ -112,6 +112,18 @@ import com.oracle.truffle.r.runtime.nodes.RSyntaxNode;
  */
 public class RRuntimeASTAccessImpl implements RRuntimeASTAccess {
 
+    private static Object getIntrinsicValue(Object result) {
+        if (result instanceof RSyntaxConstant) {
+            return ((RSyntaxConstant) result).getValue();
+        } else if (result instanceof RSyntaxLookup) {
+            return RDataFactory.createSymbolInterned(((RSyntaxLookup) result).getIdentifier());
+        } else {
+            assert result instanceof RSyntaxCall || result instanceof RSyntaxFunction : result.getClass();
+            return RDataFactory.createLanguage(((RSyntaxNode) result).asRNode());
+        }
+
+    }
+
     @TruffleBoundary
     @Override
     public int getLength(RLanguage rl) {
@@ -152,7 +164,15 @@ public class RRuntimeASTAccessImpl implements RRuntimeASTAccess {
                     result = RSyntaxLookup.createDummyLookup(null, "function", true);
                     break;
                 case 1:
-                    throw RInternalError.unimplemented("arguments of 'function'");
+                    ArgumentsSignature sig = ((RSyntaxFunction) s).getSyntaxSignature();
+                    RSyntaxElement[] defaults = ((RSyntaxFunction) s).getSyntaxArgumentDefaults();
+
+                    Object list = RNull.instance;
+                    for (int i = sig.getLength() - 1; i >= 0; i--) {
+                        list = RDataFactory.createPairList(defaults[i] == null ? RDataFactory.createSymbolInterned("") : getIntrinsicValue(defaults[i]), list,
+                                        RDataFactory.createSymbolInterned(sig.getName(i)));
+                    }
+                    return list;
                 case 2:
                     result = ((RSyntaxFunction) s).getSyntaxBody();
                     break;
@@ -173,14 +193,7 @@ public class RRuntimeASTAccessImpl implements RRuntimeASTAccess {
         /*
          * Constants and lookups are converted to their intrinsic value:
          */
-        if (result instanceof RSyntaxConstant) {
-            return ((RSyntaxConstant) result).getValue();
-        } else if (result instanceof RSyntaxLookup) {
-            return RDataFactory.createSymbolInterned(((RSyntaxLookup) result).getIdentifier());
-        } else {
-            assert result instanceof RSyntaxCall || result instanceof RSyntaxFunction : result.getClass();
-            return RDataFactory.createLanguage(((RSyntaxNode) result).asRNode());
-        }
+        return getIntrinsicValue(result);
     }
 
     @TruffleBoundary
diff --git a/com.oracle.truffle.r.test/src/com/oracle/truffle/r/test/library/base/TestSimpleVectors.java b/com.oracle.truffle.r.test/src/com/oracle/truffle/r/test/library/base/TestSimpleVectors.java
index 2791f4a2795d0d72c3114967f884741e4fe699ca..6a9585002644f9add09f56150f8b3271060f7b3b 100644
--- a/com.oracle.truffle.r.test/src/com/oracle/truffle/r/test/library/base/TestSimpleVectors.java
+++ b/com.oracle.truffle.r.test/src/com/oracle/truffle/r/test/library/base/TestSimpleVectors.java
@@ -680,6 +680,11 @@ public class TestSimpleVectors extends TestBase {
         assertEval("{ e <- quote(f(x=a, b)); names(e) }");
         assertEval("{ e <- quote(f(x=a, y=b)); names(e) }");
         assertEval("{ e <- quote(f(x=a, y=b)); names(e[-1]) }");
+
+        assertEval("{ x<-quote(function(x, y) 42); x[[2]] }");
+        assertEval("{ x<-quote(function(x, y) 42); typeof(x[[2]][[1]]) }");
+        assertEval("{ x<-quote(function(x, y) 42); names(x[[2]]) }");
+        assertEval("{ x<-quote(function(x, y=7) 42); x[[2]] }");
     }
 
     @Test