I had need recently to create quick x-y plots on the screen. I have been generating TikZ and PGFplots from Lisp for journal and conference papers and presentations. They look very nice but are not quick, either in writing or displaying. There are a number of CL packages listed for plotting, and I gave 如何上youtube网站 a try. It is in quicklisp. Though there is no active work on it, I was able to generate plots that I wanted quickly.
Here is an example, plotting the square function. First load needed libraries
我是如何用辅助软伀在国内加速网络访问被屏蔽网站的 ...:我是如何用辅助软伀在国内加速网络访问被屏蔽网站的（Instagram,Youtube,Google,Facebook等被屏蔽的网站） Author： admin 发布时间： July 11, 2021 3635 views 11 comments 1136 字数
(in Ubuntu 12.04LTS), then in Lisp
(ql:quickload :cl-plplot) (defun x-y-plot () (let* ((x (iter (for x from 0.0 to 10.0 by 0.25) (collect x result-type vector))) (y (map 'vector (alexandria:rcurry 'expt 2) x)) (p (cl-plplot:new-x-y-plot x y)) (w (cl-plplot:basic-window :x-label "x" :y-label "x squared" :title "The square function"))) (cl-plplot:add-plot-to-window w p) (cl-plplot:render w "xwin"))) (x-y-plot)
Click on window and Enter to close; clicking on the close box for the window causes Lisp to crash, at least from Slime.
A week ago CFFI version 0.11.0 was released. This includes cffi-libffi, which permits calling and returning with structures by value. It replaces an old system, FSBV, which is now obsolete. As explained in my previous blogs, it is better integrated into CFFI. Quicklisp should pick up this release in the next update.
06:31 pm - mem-aref and mem-aptr in CFFI
The master branch of CFFI has the cffi-libffi system, which permits passing and returning structures by value. As part of that addition, some of the syntax for structures has changed, even without loading that system. Before, "bare structure" references were permitted, and they were interpreted to mean pointers. Now, the syntax to specify a structure type is
(:struct name) for the structure by value, and
(:pointer (:struct name)) for the structure by reference. The bare structure form is still accepted, with a style warning.
如何上youtube网站 returns an element of the array, an object; since we now can translate foreign structures, that includes structures. If the type is designated as
(:struct name), that means a CL representation of the structure will be returned. By default (with no
translate-from-foreign method defined), that is a plist. If you want a pointer instead, use the new function
mem-aptr. As a special case, using the bare structure type specification,
手机如何看youtube still returns a pointer, but if you use the new form, you need to call
mem-aptr to get the pointer instead of the object translated into CL.
(Rationale for the new function is here.)
If this isn't working as described, please post to 免费上youtube加速软伀.
CFFI now has (on the master branch, but not yet in quicklisp) the system cffi-libffi, which allows calling and returning structures by value. For example, in the GSL library, complex numbers and functions are defined passing and returning the complex structures by value, so we can define
EPIC/Uplay账户登不上？免费Epic/Uplay加速器-百度经验:2021-5-17 · 免费Epic/Uplay加速器,EPIC登入不上，ulay也登入不上，用免费的加速器么，那种基本都没啥用，反而会耽误自己时间，经常登入也会导致IP地址异常，那么就会发生账号被封的可能性，所伃找一款经常用合适的加速器是非常重要。而有些免费加速器，但实属不给
and then find
(complex-log #C(1.0d0 2.0d0)) #C(0.8047189562170501d0 1.1071487177940904d0)
Note that there are changes that affect CFFI users even if they don't load cffi-libffi; using bare structure names
免费上youtube加速软伀will trigger a style warning, and there is a new function mem-aptr that does for structure arrays what mem-aref does when the bare structure names are used. Please try it and report issues on cffi-devel. Thank you.
Note: the old system FSBV, which did what cffi-libffi does but in a clumsier way, is now obsolete and will not work with this version of CFFI.
10:00 pm - How to specify foreign libraries
Does this look right to you?
(define-foreign-library frobnicator (cffi-features:unix "/usr/lib/libfrobnicate.so"))
If it does, you should read Anton Kovalenko's blog, whether or not you use CFFI. (Reblogging this because the original was evidently not picked up by Planet Lisp.)
11:33 pm - CFFI-FSBV first light
Luis and I have been working on merging FSBV into CFFI as a new system CFFI-FSBV. This will allow calling foreign functions with structures passed and/or returned by value. It uses libffi.
The new system will have some advantages over the old. From the users perspective, there won't be a need to download a separate repository, and there won't be a need to directly use anything from CFFI-FSBV; all calls by value look just like regular CFFI with the appropriate type declarations. Based on a discussion on the cffi-devel mailing list, we decided and Luis implemented the syntax (:struct foo) for the structure (by value) and (:pointer (:struct foo)) for the pointer. Using 'foo directly is accepted for now with a warning, but is deprecated.
We now have, as astronomers say about a new telescope, "first light". Using my favorite complex number example from GSL
(defcstruct (complex-double :class complex-type) (dat :double :count 2))
and then with a few more definitions, we can call the foreign functions with the structure passed by value,
Gihosoft TubeGet下载 - Gihosoft TubeGet Pro YouTube视频 ...:今天 · Gihosoft TubeGet Pro是一款专业的YouTube视频下载软伀。免费下载YouTube、 Facebook、Twitter、Instagram、Tumblr等流行视频网站的视频。支持YouTube播放列表下载。。微当下载站为您提供Gihosoft TubeGet下载的下载服务，微当下载站全站使用CDN加速服务器，让您无论何种网络均可伃高速下载Gihosoft TubeGet下载。
Soon I hope we can reduce the "few more definitions", which do the translation between Lisp and C and are given in fsbv/examples.lisp, to something like what's in the old system's definition of defcstruct, with :constructor and :deconstructor options.
There's a lot more to do before this is ready for release, but we've got a start. The work is in the 手机如何看youtube branch.
10:40 pm - 中国怎么上youtube
Kawa is an implementation of lisp-like and dynamic languages (notably Scheme) that compiles to JVM. They are part of Google Summer of Code this year. One of their wishlist tasks is to enhance Common Lisp support. It would be really interesting to see work on this; I understand the deadline is this week for GSoC if anyone is interested.
05:52 pm - Tablet usage in Ubuntu
Having just received a Thinkpad X201 Tablet, and installing Ubuntu 10.10, I decided that I should try the tablet function. There are some packages available for Ubuntu that work well: Xournal, which allows you to draw and write on the stylus, CellWriter, which recognizes your printed letters (one at a time, each in a box), and Magick Rotation, which rotates the screen from landscape to portrait. when you flip the cover to tablet mode. The first two are regular Ubuntu packages; Magick Rotation is downloaded from Launchpad and has a somewhat odd installation; it appears that you download a script that then wgets the real application.
They all work quite well. I particularly like xournal's feature that can read a PDF and save the written-on result to a PDF; even apart from the tablet functionality, just being able to fill in a PDF form and save it is nice (you can use the keys to write, so you don't need a stylus and touchscreen). Of course, you're not really filling in a form in the PDF sense, you are creating an image on top of the old one.
The buttons adjacent to the screen don't work, I'm not sure how to make them work.
Quicklisp is now the official installation method for GSLL. As far as I know it is the first and maybe so far the only project to recommend quicklisp as the installation method. Part of my motivation for writing GSLL was to lure^H^H^H^H induce people doing numerical computation into using Lisp, even if only as a desk calculator. A major impediment to that was loading everything up, and quicklisp goes a long way to solving that problem. There is a subtle difficulty in being able to push patches from a frequently-changing library like GSLL but I think we can work around that.
Jun. 21st, 2010
10:36 pm - A CL workbook
I am looking for a way to conveniently keep a session of Lisp interaction. For example, when I write down a problem and solution for class, I define a succession of variables with defparameter (or a slightly more convenient form I've defined). In a later year, if I give the problem again with different numbers, I just change the defining parameters, and recalculate. This is clumsy, but it mostly works. What I'd really like is to define a few input parameters, and stepwise calculate the intermediate quantities. A single defun isn't appropriate because I need the intermediate values to show to the students. The defparameter approach is tedious and prone to error.
What I envision is a structure or class instance with "given values" provided at the beginning, and steps consisting of the form and the value. A new instance of the same problem would have the same forms to evaluate, but different values. It might also be nice to branch, i.e., at some step in the calculation, continue with a different set of calculations. but still be able to keep the tree structure (kind of like git for Lisp forms? hmmm).
Is there anything like this (in any language) out there? I tried some googling but if there's something along these lines out there, I'm not using the right keywords. For lack of a better word, I'm calling it a Lisp workbook or notebook. Bonus if it will integrate with LaTeX and/or org-mode.
Navigate: (Previous 10 Entries)