(use-modules (system foreign) (system foreign-library)) (define libgsl (load-foreign-library "/gnu/store/zfxs8xbh68nb8smvsdf9i6aj6hbzgix4-profile/lib/libgsl.so")) (define gsl-vector-alloc (foreign-library-function libgsl "gsl_vector_alloc" #:return-type '* #:arg-types (list size_t))) (define gsl-vector-set (foreign-library-function libgsl "gsl_vector_set" #:return-type void #:arg-types (list '* size_t double))) (define gsl-vector-get (foreign-library-function libgsl "gsl_vector_get" #:return-type double #:arg-types (list '* size_t))) (define gsl-blas-dscal (foreign-library-function libgsl "gsl_blas_dscal" #:return-type void #:arg-types (list double '*))) (let* ((n 3) (x (gsl-vector-alloc n))) (for-each (lambda (i) (gsl-vector-set x i i)) (iota n)) (gsl-blas-dscal 10 x))