{-# LANGUAGE ConstraintKinds #-}
{-# LANGUAGE DataKinds #-}
{-# LANGUAGE DeriveDataTypeable #-}
{-# LANGUAGE ExistentialQuantification #-}
{-# LANGUAGE ForeignFunctionInterface #-}
{-# LANGUAGE GeneralizedNewtypeDeriving #-}
{-# LANGUAGE PolyKinds #-}
{-# LANGUAGE RankNTypes #-}
{-# LANGUAGE ViewPatterns #-}
{-# LANGUAGE TypeFamilies #-}
{-# LANGUAGE TypeOperators #-}
{-# LANGUAGE QuasiQuotes #-}
{-# LANGUAGE TemplateHaskell #-}
{-# OPTIONS_GHC -fno-warn-redundant-constraints #-}
module Foreign.R
( module Foreign.R.Type
, SEXP(..)
, SomeSEXP(..)
, unSomeSEXP
, cast
, asTypeOf
, unsafeCoerce
, allocSEXP
, allocList
, allocVector
, allocVectorProtected
, install
, mkString
, mkChar
, CEType(..)
, mkCharCE
, mkCharLenCE
, mkWeakRef
, typeOf
, isS4
, setAttributes
, getAttribute
, getAttributes
, cons
, lcons
, car
, cdr
, tag
, setCar
, setCdr
, setTag
, envFrame
, envEnclosing
, envHashtab
, closureFormals
, closureBody
, closureEnv
, promiseCode
, promiseEnv
, promiseValue
, symbolPrintName
, symbolValue
, symbolInternal
, length
, trueLength
, char
, real
, integer
, logical
, complex
, raw
, string
, unsafeSEXPToVectorPtr
, readVector
, writeVector
, eval
, tryEval
, tryEvalSilent
, lang1
, lang2
, lang3
, findFun
, findVar
, protect
, unprotect
, unprotectPtr
, preserveObject
, releaseObject
, gc
, isRInteractive
, nilValue
, unboundValue
, missingArg
, baseEnv
, emptyEnv
, globalEnv
, signalHandlers
, interruptsPending
, printValue
, SEXPInfo(..)
, peekInfo
, SEXPREC
, SEXP0(..)
, sexp
, unsexp
, release
, unsafeRelease
, unsafeReleaseSome
, withProtected
, indexVector
) where
import Control.Memory.Region
import Foreign.R.Internal
import Foreign.R.Type
import Foreign.R.Type as R
import Control.Applicative
import Control.Exception (bracket)
import Data.Complex
import Data.Int (Int32)
import Foreign (Ptr, castPtr)
import Foreign.C
import Foreign.R.Context (rCtx, SEXP0(..), SEXPREC)
import Foreign.R.Encoding
import qualified Language.C.Inline as C
import qualified Language.C.Inline.Unsafe as CU
import Prelude hiding (asTypeOf, length)
C.context (C.baseCtx <> rCtx)
C.include "<Rinternals.h>"
C.include "<stdlib.h>"
C.include "<stdint.h>"
car :: SEXP s a -> IO (SomeSEXP s)
car :: forall s (a :: SEXPTYPE). SEXP s a -> IO (SomeSEXP s)
car (forall s (a :: SEXPTYPE). SEXP s a -> SEXP0
unsexp -> SEXP0
s) = forall s. SEXP0 -> SomeSEXP s
somesexp forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> [CU.exp| SEXP { CAR( $(SEXP s) ) } |]
setCar :: SEXP s a -> SEXP s b -> IO (SEXP s b)
setCar :: forall s (a :: SEXPTYPE) (b :: SEXPTYPE).
SEXP s a -> SEXP s b -> IO (SEXP s b)
setCar (forall s (a :: SEXPTYPE). SEXP s a -> SEXP0
unsexp -> SEXP0
s) (forall s (a :: SEXPTYPE). SEXP s a -> SEXP0
unsexp -> SEXP0
s') = forall s (a :: SEXPTYPE). SEXP0 -> SEXP s a
sexp forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> [CU.exp| SEXP { SETCAR( $(SEXP s), $(SEXP s') ) } |]
cdr :: SEXP s a -> IO (SomeSEXP s)
cdr :: forall s (a :: SEXPTYPE). SEXP s a -> IO (SomeSEXP s)
cdr (forall s (a :: SEXPTYPE). SEXP s a -> SEXP0
unsexp -> SEXP0
s) = forall s. SEXP0 -> SomeSEXP s
somesexp forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> [CU.exp| SEXP { CAR( $(SEXP s) ) } |]
setCdr :: SEXP s a -> SEXP s b -> IO (SEXP s b)
setCdr :: forall s (a :: SEXPTYPE) (b :: SEXPTYPE).
SEXP s a -> SEXP s b -> IO (SEXP s b)
setCdr (forall s (a :: SEXPTYPE). SEXP s a -> SEXP0
unsexp -> SEXP0
s) (forall s (a :: SEXPTYPE). SEXP s a -> SEXP0
unsexp -> SEXP0
s') = forall s (a :: SEXPTYPE). SEXP0 -> SEXP s a
sexp forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> [CU.exp| SEXP { SETCDR( $(SEXP s), $(SEXP s') ) } |]
tag :: SEXP s a -> IO (SomeSEXP s)
tag :: forall s (a :: SEXPTYPE). SEXP s a -> IO (SomeSEXP s)
tag (forall s (a :: SEXPTYPE). SEXP s a -> SEXP0
unsexp -> SEXP0
s) = forall s. SEXP0 -> SomeSEXP s
somesexp forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> [CU.exp| SEXP { TAG( $(SEXP s) ) } |]
setTag :: SEXP s a -> SEXP s b -> IO ()
setTag :: forall s (a :: SEXPTYPE) (b :: SEXPTYPE).
SEXP s a -> SEXP s b -> IO ()
setTag (forall s (a :: SEXPTYPE). SEXP s a -> SEXP0
unsexp -> SEXP0
s) (forall s (a :: SEXPTYPE). SEXP s a -> SEXP0
unsexp -> SEXP0
s') = [CU.exp| void { SET_TAG( $(SEXP s), $(SEXP s') ) } |]
envFrame :: (SEXP s 'R.Env) -> IO (SEXP s R.PairList)
envFrame :: forall s. SEXP s 'Env -> IO (SEXP s PairList)
envFrame (forall s (a :: SEXPTYPE). SEXP s a -> SEXP0
unsexp -> SEXP0
s) = forall s (a :: SEXPTYPE). SEXP0 -> SEXP s a
sexp forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> [CU.exp| SEXP { FRAME( $(SEXP s) ) } |]
envEnclosing :: SEXP s 'R.Env -> IO (SEXP s 'R.Env)
envEnclosing :: forall s. SEXP s 'Env -> IO (SEXP s 'Env)
envEnclosing (forall s (a :: SEXPTYPE). SEXP s a -> SEXP0
unsexp -> SEXP0
s) = forall s (a :: SEXPTYPE). SEXP0 -> SEXP s a
sexp forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> [CU.exp| SEXP { ENCLOS( $(SEXP s) ) } |]
envHashtab :: SEXP s 'R.Env -> IO (SEXP s 'R.Vector)
envHashtab :: forall s. SEXP s 'Env -> IO (SEXP s 'Vector)
envHashtab (forall s (a :: SEXPTYPE). SEXP s a -> SEXP0
unsexp -> SEXP0
s) = forall s (a :: SEXPTYPE). SEXP0 -> SEXP s a
sexp forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> [CU.exp| SEXP { HASHTAB( $(SEXP s) ) } |]
closureFormals :: SEXP s 'R.Closure -> IO (SEXP s R.PairList)
closureFormals :: forall s. SEXP s 'Closure -> IO (SEXP s PairList)
closureFormals (forall s (a :: SEXPTYPE). SEXP s a -> SEXP0
unsexp -> SEXP0
s) = forall s (a :: SEXPTYPE). SEXP0 -> SEXP s a
sexp forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> [CU.exp| SEXP { FORMALS( $(SEXP s) ) }|]
closureBody :: SEXP s 'R.Closure -> IO (SomeSEXP s)
closureBody :: forall s. SEXP s 'Closure -> IO (SomeSEXP s)
closureBody (forall s (a :: SEXPTYPE). SEXP s a -> SEXP0
unsexp -> SEXP0
s) = forall s. SEXP0 -> SomeSEXP s
somesexp forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> [CU.exp| SEXP { BODY( $(SEXP s) ) } |]
closureEnv :: SEXP s 'R.Closure -> IO (SEXP s 'R.Env)
closureEnv :: forall s. SEXP s 'Closure -> IO (SEXP s 'Env)
closureEnv (forall s (a :: SEXPTYPE). SEXP s a -> SEXP0
unsexp -> SEXP0
s) = forall s (a :: SEXPTYPE). SEXP0 -> SEXP s a
sexp forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> [CU.exp| SEXP { CLOENV( $(SEXP s) ) }|]
promiseCode :: SEXP s 'R.Promise -> IO (SomeSEXP s)
promiseCode :: forall s. SEXP s 'Promise -> IO (SomeSEXP s)
promiseCode (forall s (a :: SEXPTYPE). SEXP s a -> SEXP0
unsexp -> SEXP0
s) = forall s. SEXP0 -> SomeSEXP s
somesexp forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> [CU.exp| SEXP { PRCODE( $(SEXP s) )}|]
promiseEnv :: SEXP s 'R.Promise -> IO (SomeSEXP s)
promiseEnv :: forall s. SEXP s 'Promise -> IO (SomeSEXP s)
promiseEnv (forall s (a :: SEXPTYPE). SEXP s a -> SEXP0
unsexp -> SEXP0
s) = forall s. SEXP0 -> SomeSEXP s
somesexp forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> [CU.exp| SEXP { PRENV( $(SEXP s) )}|]
promiseValue :: SEXP s 'R.Promise -> IO (SomeSEXP s)
promiseValue :: forall s. SEXP s 'Promise -> IO (SomeSEXP s)
promiseValue (forall s (a :: SEXPTYPE). SEXP s a -> SEXP0
unsexp -> SEXP0
s) = forall s. SEXP0 -> SomeSEXP s
somesexp forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> [CU.exp| SEXP { PRVALUE( $(SEXP s) )}|]
length :: R.IsVector a => SEXP s a -> IO CInt
length :: forall (a :: SEXPTYPE) s. IsVector a => SEXP s a -> IO CInt
length (forall s (a :: SEXPTYPE). SEXP s a -> SEXP0
unsexp -> SEXP0
s) = [CU.exp| int { LENGTH( $(SEXP s) ) }|]
trueLength :: R.IsVector a => SEXP s a -> IO CInt
trueLength :: forall (a :: SEXPTYPE) s. IsVector a => SEXP s a -> IO CInt
trueLength (forall s (a :: SEXPTYPE). SEXP s a -> SEXP0
unsexp -> SEXP0
s) = [CU.exp| int { TRUELENGTH( $(SEXP s) ) }|]
char :: SEXP s 'R.Char -> IO CString
char :: forall s. SEXP s 'Char -> IO CString
char (forall s (a :: SEXPTYPE). SEXP s a -> SEXP0
unsexp -> SEXP0
s) = forall a b. Ptr a -> Ptr b
castPtr forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> [CU.exp| const char* { CHAR($(SEXP s))}|]
real :: SEXP s 'R.Real -> IO (Ptr Double)
real :: forall s. SEXP s 'Real -> IO (Ptr Double)
real (forall s (a :: SEXPTYPE). SEXP s a -> SEXP0
unsexp -> SEXP0
s) = forall a b. Ptr a -> Ptr b
castPtr forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> [CU.exp| double* { REAL( $(SEXP s)) }|]
integer :: SEXP s 'R.Int -> IO (Ptr Int32)
integer :: forall s. SEXP s 'Int -> IO (Ptr Int32)
integer (forall s (a :: SEXPTYPE). SEXP s a -> SEXP0
unsexp -> SEXP0
s) = [CU.exp| int32_t* { INTEGER( $(SEXP s) )}|]
raw :: SEXP s 'R.Raw -> IO (Ptr CChar)
raw :: forall s. SEXP s 'Raw -> IO CString
raw (forall s (a :: SEXPTYPE). SEXP s a -> SEXP0
unsexp -> SEXP0
s) = [CU.exp| char* { RAW($(SEXP s)) } |]
logical :: SEXP s 'R.Logical -> IO (Ptr R.Logical)
logical :: forall s. SEXP s 'Logical -> IO (Ptr Logical)
logical (forall s (a :: SEXPTYPE). SEXP s a -> SEXP0
unsexp -> SEXP0
s) = forall a b. Ptr a -> Ptr b
castPtr forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$>
[CU.exp| int* { LOGICAL($(SEXP s)) } |]
complex :: SEXP s 'R.Complex -> IO (Ptr (Complex Double))
complex :: forall s. SEXP s 'Complex -> IO (Ptr (Complex Double))
complex (forall s (a :: SEXPTYPE). SEXP s a -> SEXP0
unsexp -> SEXP0
s) = [CU.exp| Rcomplex* { COMPLEX($(SEXP s)) }|]
string :: SEXP s 'R.String -> IO (Ptr (SEXP s 'R.Char))
string :: forall s. SEXP s 'String -> IO (Ptr (SEXP s 'Char))
string (forall s (a :: SEXPTYPE). SEXP s a -> SEXP0
unsexp -> SEXP0
s) = forall a b. Ptr a -> Ptr b
castPtr forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$>
[CU.exp| SEXP* { STRING_PTR($(SEXP s)) }|]
readVector :: R.IsGenericVector a => SEXP s a -> Int -> IO (SomeSEXP s)
readVector :: forall (a :: SEXPTYPE) s.
IsGenericVector a =>
SEXP s a -> Int -> IO (SomeSEXP s)
readVector (forall s (a :: SEXPTYPE). SEXP s a -> SEXP0
unsexp -> SEXP0
s) (forall a b. (Integral a, Num b) => a -> b
fromIntegral -> CInt
n) = forall s. SEXP0 -> SomeSEXP s
somesexp forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$>
[CU.exp| SEXP { VECTOR_ELT( $(SEXP s), $(int n) ) } |]
indexVector :: IsGenericVector a => SEXP s a -> Int -> IO (SomeSEXP s)
{-# DEPRECATED indexVector "Use readVector instead." #-}
indexVector :: forall (a :: SEXPTYPE) s.
IsGenericVector a =>
SEXP s a -> Int -> IO (SomeSEXP s)
indexVector = forall (a :: SEXPTYPE) s.
IsGenericVector a =>
SEXP s a -> Int -> IO (SomeSEXP s)
readVector
writeVector :: R.IsGenericVector a => SEXP s a -> Int -> SEXP s b -> IO (SEXP s a)
writeVector :: forall (a :: SEXPTYPE) s (b :: SEXPTYPE).
IsGenericVector a =>
SEXP s a -> Int -> SEXP s b -> IO (SEXP s a)
writeVector (forall s (a :: SEXPTYPE). SEXP s a -> SEXP0
unsexp -> SEXP0
a) (forall a b. (Integral a, Num b) => a -> b
fromIntegral -> CInt
n) (forall s (a :: SEXPTYPE). SEXP s a -> SEXP0
unsexp -> SEXP0
b) = forall s (a :: SEXPTYPE). SEXP0 -> SEXP s a
sexp forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$>
[CU.exp| SEXP { SET_VECTOR_ELT($(SEXP a),$(int n), $(SEXP b)) } |]
unsafeSEXPToVectorPtr :: SEXP s a -> Ptr ()
unsafeSEXPToVectorPtr :: forall s (a :: SEXPTYPE). SEXP s a -> Ptr ()
unsafeSEXPToVectorPtr (forall s (a :: SEXPTYPE). SEXP s a -> SEXP0
unsexp -> SEXP0
s) =
[C.pure| void * { DATAPTR( $(SEXP s) ) } |]
symbolPrintName :: SEXP s 'R.Symbol -> IO (SomeSEXP s)
symbolPrintName :: forall s. SEXP s 'Symbol -> IO (SomeSEXP s)
symbolPrintName (forall s (a :: SEXPTYPE). SEXP s a -> SEXP0
unsexp -> SEXP0
s) = forall s. SEXP0 -> SomeSEXP s
somesexp forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> [CU.exp| SEXP { PRINTNAME( $(SEXP s)) } |]
symbolValue :: SEXP s 'R.Symbol -> IO (SomeSEXP s)
symbolValue :: forall s. SEXP s 'Symbol -> IO (SomeSEXP s)
symbolValue (forall s (a :: SEXPTYPE). SEXP s a -> SEXP0
unsexp -> SEXP0
s) = forall s. SEXP0 -> SomeSEXP s
somesexp forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> [CU.exp| SEXP { SYMVALUE( $(SEXP s)) } |]
symbolInternal :: SEXP s 'R.Symbol -> IO (SomeSEXP s)
symbolInternal :: forall s. SEXP s 'Symbol -> IO (SomeSEXP s)
symbolInternal (forall s (a :: SEXPTYPE). SEXP s a -> SEXP0
unsexp -> SEXP0
s) = forall s. SEXP0 -> SomeSEXP s
somesexp forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> [CU.exp| SEXP { INTERNAL( $(SEXP s)) }|]
mkString :: CString -> IO (SEXP V 'R.String)
mkString :: CString -> IO (SEXP V 'String)
mkString CString
value = forall s (a :: SEXPTYPE). SEXP0 -> SEXP s a
sexp forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> [C.exp| SEXP { Rf_mkString($(char * value)) } |]
mkChar :: CString -> IO (SEXP V 'R.Char)
mkChar :: CString -> IO (SEXP V 'Char)
mkChar CString
value = forall s (a :: SEXPTYPE). SEXP0 -> SEXP s a
sexp forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> [C.exp| SEXP { Rf_mkChar($(char * value)) } |]
mkCharCE :: CEType -> CString -> IO (SEXP V 'R.Char)
mkCharCE :: CEType -> CString -> IO (SEXP V 'Char)
mkCharCE (forall a. Enum a => a -> CInt
cIntFromEnum -> CInt
ce) CString
value = forall s (a :: SEXPTYPE). SEXP0 -> SEXP s a
sexp forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$>
[C.exp| SEXP { Rf_mkCharCE($(char * value), $(int ce)) } |]
mkCharLenCE :: CEType -> CString -> Int -> IO (SEXP V 'R.Char)
mkCharLenCE :: CEType -> CString -> Int -> IO (SEXP V 'Char)
mkCharLenCE (forall a. Enum a => a -> CInt
cIntFromEnum -> CInt
ce) CString
value (forall a b. (Integral a, Num b) => a -> b
fromIntegral -> CInt
len) = forall s (a :: SEXPTYPE). SEXP0 -> SEXP s a
sexp forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$>
[C.exp| SEXP { Rf_mkCharLenCE($(char * value), $(int len), $(int ce)) } |]
install :: CString -> IO (SEXP V 'R.Symbol)
install :: CString -> IO (SEXP V 'Symbol)
install CString
name = forall s (a :: SEXPTYPE). SEXP0 -> SEXP s a
sexp forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$>
[C.exp| SEXP { Rf_install($(char * name)) }|]
allocSEXP :: SSEXPTYPE a -> IO (SEXP V a)
allocSEXP :: forall (a :: SEXPTYPE). SSEXPTYPE a -> IO (SEXP V a)
allocSEXP (forall (a :: SEXPTYPE). SSEXPTYPE a -> CUInt
cUIntFromSingEnum -> CUInt
s) = forall s (a :: SEXPTYPE). SEXP0 -> SEXP s a
sexp forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$>
[C.exp| SEXP { Rf_allocSExp( $(unsigned int s) ) }|]
allocList :: Int -> IO (SEXP V 'R.List)
allocList :: Int -> IO (SEXP V PairList)
allocList (forall a b. (Integral a, Num b) => a -> b
fromIntegral -> CInt
n) = forall s (a :: SEXPTYPE). SEXP0 -> SEXP s a
sexp forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> [C.exp| SEXP {Rf_allocList($(int n))} |]
allocVector :: R.IsVector a => SSEXPTYPE a -> Int -> IO (SEXP V a)
allocVector :: forall (a :: SEXPTYPE).
IsVector a =>
SSEXPTYPE a -> Int -> IO (SEXP V a)
allocVector (forall (a :: SEXPTYPE). SSEXPTYPE a -> CUInt
cUIntFromSingEnum -> CUInt
p) (forall a b. (Integral a, Num b) => a -> b
fromIntegral -> CInt
n) = forall s (a :: SEXPTYPE). SEXP0 -> SEXP s a
sexp forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$>
[C.exp| SEXP {Rf_allocVector( $(unsigned int p), $(int n)) } |]
allocVectorProtected :: (R.IsVector a) => SSEXPTYPE a -> Int -> IO (SEXP s a)
allocVectorProtected :: forall (a :: SEXPTYPE) s.
IsVector a =>
SSEXPTYPE a -> Int -> IO (SEXP s a)
allocVectorProtected SSEXPTYPE a
ty Int
n = forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap forall t s (a :: SEXPTYPE). (t <= s) => SEXP s a -> SEXP t a
release (forall s (a :: SEXPTYPE). SEXP s a -> IO (SEXP G a)
protect forall (m :: * -> *) a b. Monad m => (a -> m b) -> m a -> m b
=<< forall (a :: SEXPTYPE).
IsVector a =>
SSEXPTYPE a -> Int -> IO (SEXP V a)
allocVector SSEXPTYPE a
ty Int
n)
cons :: SEXP s a -> SEXP s b -> IO (SEXP V 'R.List)
cons :: forall s (a :: SEXPTYPE) (b :: SEXPTYPE).
SEXP s a -> SEXP s b -> IO (SEXP V PairList)
cons (forall s (a :: SEXPTYPE). SEXP s a -> SEXP0
unsexp -> SEXP0
a) (forall s (a :: SEXPTYPE). SEXP s a -> SEXP0
unsexp -> SEXP0
b) = forall s (a :: SEXPTYPE). SEXP0 -> SEXP s a
sexp forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$>
[C.exp| SEXP { Rf_cons($(SEXP a), $(SEXP b)) }|]
lcons :: SEXP s a -> SEXP s b -> IO (SEXP V 'R.Lang)
lcons :: forall s (a :: SEXPTYPE) (b :: SEXPTYPE).
SEXP s a -> SEXP s b -> IO (SEXP V 'Lang)
lcons (forall s (a :: SEXPTYPE). SEXP s a -> SEXP0
unsexp -> SEXP0
a) (forall s (a :: SEXPTYPE). SEXP s a -> SEXP0
unsexp -> SEXP0
b) = forall s (a :: SEXPTYPE). SEXP0 -> SEXP s a
sexp forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$>
[C.exp| SEXP { Rf_lcons($(SEXP a), $(SEXP b)) } |]
printValue :: SEXP s a -> IO ()
printValue :: forall s (a :: SEXPTYPE). SEXP s a -> IO ()
printValue (forall s (a :: SEXPTYPE). SEXP s a -> SEXP0
unsexp -> SEXP0
s) =
[C.exp| void { Rf_PrintValue($(SEXP s)) }|]
protect :: SEXP s a -> IO (SEXP G a)
protect :: forall s (a :: SEXPTYPE). SEXP s a -> IO (SEXP G a)
protect (forall s (a :: SEXPTYPE). SEXP s a -> SEXP0
unsexp -> SEXP0
s) = forall s (a :: SEXPTYPE). SEXP0 -> SEXP s a
sexp forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$>
[CU.exp| SEXP { Rf_protect($(SEXP s)) }|]
unprotect :: Int -> IO ()
unprotect :: Int -> IO ()
unprotect (forall a b. (Integral a, Num b) => a -> b
fromIntegral -> CInt
i) =
[CU.exp| void { Rf_unprotect($(int i)) } |]
unprotectPtr :: SEXP G a -> IO ()
unprotectPtr :: forall (a :: SEXPTYPE). SEXP G a -> IO ()
unprotectPtr (forall s (a :: SEXPTYPE). SEXP s a -> SEXP0
unsexp -> SEXP0
s) =
[CU.exp| void { Rf_unprotect_ptr($(SEXP s)) }|]
gc :: IO ()
gc :: IO ()
gc = [C.exp| void { R_gc() }|]
preserveObject :: SEXP s a -> IO ()
preserveObject :: forall s (a :: SEXPTYPE). SEXP s a -> IO ()
preserveObject (forall s (a :: SEXPTYPE). SEXP s a -> SEXP0
unsexp -> SEXP0
s) =
[CU.exp| void { R_PreserveObject( $(SEXP s) )} |]
releaseObject :: SEXP s a -> IO ()
releaseObject :: forall s (a :: SEXPTYPE). SEXP s a -> IO ()
releaseObject (forall s (a :: SEXPTYPE). SEXP s a -> SEXP0
unsexp -> SEXP0
s) =
[CU.exp| void { R_ReleaseObject( $(SEXP s) )} |]
eval :: SEXP s a -> SEXP s 'R.Env -> IO (SomeSEXP V)
eval :: forall s (a :: SEXPTYPE).
SEXP s a -> SEXP s 'Env -> IO (SomeSEXP V)
eval (forall s (a :: SEXPTYPE). SEXP s a -> SEXP0
unsexp -> SEXP0
expr) (forall s (a :: SEXPTYPE). SEXP s a -> SEXP0
unsexp -> SEXP0
env) = forall s. SEXP0 -> SomeSEXP s
somesexp forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$>
[C.exp| SEXP { Rf_eval($(SEXP expr), $(SEXP env)) }|]
tryEval :: SEXP s a -> SEXP s 'R.Env -> Ptr CInt -> IO (SomeSEXP V)
tryEval :: forall s (a :: SEXPTYPE).
SEXP s a -> SEXP s 'Env -> Ptr CInt -> IO (SomeSEXP V)
tryEval (forall s (a :: SEXPTYPE). SEXP s a -> SEXP0
unsexp -> SEXP0
expr) (forall s (a :: SEXPTYPE). SEXP s a -> SEXP0
unsexp -> SEXP0
env) Ptr CInt
retCode = forall s. SEXP0 -> SomeSEXP s
somesexp forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$>
[C.exp| SEXP { R_tryEval($(SEXP expr), $(SEXP env), $(int* retCode)) }|]
tryEvalSilent :: SEXP s a -> SEXP s 'R.Env -> Ptr CInt -> IO (SomeSEXP V)
tryEvalSilent :: forall s (a :: SEXPTYPE).
SEXP s a -> SEXP s 'Env -> Ptr CInt -> IO (SomeSEXP V)
tryEvalSilent (forall s (a :: SEXPTYPE). SEXP s a -> SEXP0
unsexp -> SEXP0
expr) (forall s (a :: SEXPTYPE). SEXP s a -> SEXP0
unsexp -> SEXP0
env) Ptr CInt
retCode = forall s. SEXP0 -> SomeSEXP s
somesexp forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$>
[C.exp| SEXP { R_tryEvalSilent($(SEXP expr), $(SEXP env), $(int* retCode)) }|]
lang1 :: SEXP s a -> IO (SEXP V 'R.Lang)
lang1 :: forall s (a :: SEXPTYPE). SEXP s a -> IO (SEXP V 'Lang)
lang1 (forall s (a :: SEXPTYPE). SEXP s a -> SEXP0
unsexp -> SEXP0
s) = forall s (a :: SEXPTYPE). SEXP0 -> SEXP s a
sexp forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$>
[C.exp| SEXP {Rf_lang1($(SEXP s)) }|]
lang2 :: SEXP s a -> SEXP s b -> IO (SEXP V 'R.Lang)
lang2 :: forall s (a :: SEXPTYPE) (b :: SEXPTYPE).
SEXP s a -> SEXP s b -> IO (SEXP V 'Lang)
lang2 (forall s (a :: SEXPTYPE). SEXP s a -> SEXP0
unsexp -> SEXP0
f) (forall s (a :: SEXPTYPE). SEXP s a -> SEXP0
unsexp -> SEXP0
x) = forall s (a :: SEXPTYPE). SEXP0 -> SEXP s a
sexp forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$>
[C.exp| SEXP {Rf_lang2($(SEXP f), $(SEXP x)) }|]
lang3 :: SEXP s a -> SEXP s b -> SEXP s c -> IO (SEXP V 'R.Lang)
lang3 :: forall s (a :: SEXPTYPE) (b :: SEXPTYPE) (c :: SEXPTYPE).
SEXP s a -> SEXP s b -> SEXP s c -> IO (SEXP V 'Lang)
lang3 (forall s (a :: SEXPTYPE). SEXP s a -> SEXP0
unsexp -> SEXP0
f) (forall s (a :: SEXPTYPE). SEXP s a -> SEXP0
unsexp -> SEXP0
x) (forall s (a :: SEXPTYPE). SEXP s a -> SEXP0
unsexp -> SEXP0
y) = forall s (a :: SEXPTYPE). SEXP0 -> SEXP s a
sexp forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$>
[C.exp| SEXP {Rf_lang3($(SEXP f), $(SEXP x), $(SEXP y)) }|]
findFun :: SEXP s a -> SEXP s 'R.Env -> IO (SomeSEXP s)
findFun :: forall s (a :: SEXPTYPE).
SEXP s a -> SEXP s 'Env -> IO (SomeSEXP s)
findFun (forall s (a :: SEXPTYPE). SEXP s a -> SEXP0
unsexp -> SEXP0
a) (forall s (a :: SEXPTYPE). SEXP s a -> SEXP0
unsexp -> SEXP0
env) = forall s. SEXP0 -> SomeSEXP s
somesexp forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$>
[CU.exp| SEXP { Rf_findFun($(SEXP a), $(SEXP env)) }|]
findVar :: SEXP s a -> SEXP s 'R.Env -> IO (SEXP s 'R.Symbol)
findVar :: forall s (a :: SEXPTYPE).
SEXP s a -> SEXP s 'Env -> IO (SEXP s 'Symbol)
findVar (forall s (a :: SEXPTYPE). SEXP s a -> SEXP0
unsexp -> SEXP0
a) (forall s (a :: SEXPTYPE). SEXP s a -> SEXP0
unsexp -> SEXP0
env) = forall s (a :: SEXPTYPE). SEXP0 -> SEXP s a
sexp forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$>
[CU.exp| SEXP {Rf_findVar($(SEXP a), $(SEXP env))}|]
mkWeakRef :: SEXP s a -> SEXP s b -> SEXP s c -> Bool -> IO (SEXP V 'R.WeakRef)
mkWeakRef :: forall s (a :: SEXPTYPE) (b :: SEXPTYPE) (c :: SEXPTYPE).
SEXP s a -> SEXP s b -> SEXP s c -> Bool -> IO (SEXP V 'WeakRef)
mkWeakRef (forall s (a :: SEXPTYPE). SEXP s a -> SEXP0
unsexp -> SEXP0
a) (forall s (a :: SEXPTYPE). SEXP s a -> SEXP0
unsexp -> SEXP0
b) (forall s (a :: SEXPTYPE). SEXP s a -> SEXP0
unsexp -> SEXP0
c) (forall a. Enum a => a -> CInt
cIntFromEnum -> CInt
t) = forall s (a :: SEXPTYPE). SEXP0 -> SEXP s a
sexp forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$>
[C.exp| SEXP {R_MakeWeakRef($(SEXP a), $(SEXP b), $(SEXP c), $(int t))}|]
withProtected :: IO (SEXP V a)
-> (SEXP s a -> IO b)
-> IO b
withProtected :: forall (a :: SEXPTYPE) s b.
IO (SEXP V a) -> (SEXP s a -> IO b) -> IO b
withProtected IO (SEXP V a)
create SEXP s a -> IO b
f =
forall a b c. IO a -> (a -> IO b) -> (a -> IO c) -> IO c
bracket
(do { SEXP V a
x <- IO (SEXP V a)
create; SEXP G a
_ <- forall s (a :: SEXPTYPE). SEXP s a -> IO (SEXP G a)
protect SEXP V a
x; forall (m :: * -> *) a. Monad m => a -> m a
return SEXP V a
x })
(forall a b. a -> b -> a
const forall a b. (a -> b) -> a -> b
$ Int -> IO ()
unprotect Int
1)
(SEXP s a -> IO b
f forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall s (a :: SEXPTYPE) r. SEXP s a -> SEXP r a
unsafeRelease)