Skip to content

Conversation

@airballking
Copy link
Contributor

I have an application where I want to load yaml files into lisp. After some search, I found this library which wraps around a c-library which is in the debs. It does not require any further external common lisp dependencies.

cl-yaml offers yaml 1.1 support through libyaml (the c lib), while ROS itself is using yamlcpp which supports yaml 1.2. So, this is behind the curve.

Compilation worked fine for me (Ubuntu 12.04, ROS Hydro). However, the original asd (see below) still invokes the c-compiler to build some wrapping code. I still need to rosify this. So, please do not merge this just yet.

I opened this pull request to get feedback about this lib. Fire away on comments, objections, ideas for improvement.

@airballking
Copy link
Contributor Author

Bumping this discussion. Any feedback?

@gaya-
Copy link
Member

gaya- commented Jun 20, 2014

Wow, I'm impressed by the amount of code they have in the C library, didn't expect YAML parsers to be complex software.

In any case, first, my ideas on this particular lib: in my opinion, it doesn't look like there was that much effort put into this code, although, of course, I might be totally wrong. I'm not sure how well it is tested, and it also may turn out not to be well maintained, so if you'd like it to be up to date, you might end up having to maintain it yourself.

Which brings me to the other point: if you might end up looking closely into the code of this library, you might as well write your own wrapper, and then you could chose a C library that you might find more suitable for your needs, e.g. the one that supports yaml 1.2., say, yaml-cpp. The problem here is, obviously, that you'd have to wrap the yaml-cpp C++ code with C code to be able to talk through CFFI.

If you don't want external libraries, there is also the cl-yaclyaml:
https://github.com/mabragor/cl-yaclyaml
This seems to be a pure Lisp implementation of a YAML parser.
I'm not sure how well this one is maintained and what's the quality of that code but, hmm, at least it has a little webpage on CLiki :).

Finally, are you sure you have to use YAML format to store your data? If the choice of the format is in your hands, why won't you just use JSON, it is very similar to YAML, especially for simple data, and then you could just use Yason and the problem is solved:
https://github.com/cram-code/cram_3rdparty/tree/master/yason

HTH

@airballking
Copy link
Contributor Author

Hi Gaya,

thanks for your extensive comments. To make it short: I had not considered putting my data in a json-format instead of yaml. This is a very good idea which I did not have. Thanks a lot. I will consider it.

Some quick other thoughts: So far, I like how cl-yaml works. Before using cl-yaml, I tried cl-yaclyaml because of the cliki-page, and I was very disappointed: It struck me as very heavy-weight in terms of further dependencies on further Common Lisp libraries which were also written by the same guy. Also, the usage was not as comfortable as with cl-yaml. But that could just be me..

Again, thanks for the idea with json.

Cheers,
Georg.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants