From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!not-for-mail From: Ian Price Newsgroups: gmane.lisp.guile.user Subject: ANN: pfds v0.3 Date: Sat, 12 Jul 2014 17:35:21 +0100 Message-ID: <8738e63586.fsf@Kagami.home> NNTP-Posting-Host: plane.gmane.org Mime-Version: 1.0 Content-Type: text/plain X-Trace: ger.gmane.org 1405182962 5592 80.91.229.3 (12 Jul 2014 16:36:02 GMT) X-Complaints-To: usenet@ger.gmane.org NNTP-Posting-Date: Sat, 12 Jul 2014 16:36:02 +0000 (UTC) To: vicare-users , Guile Users Original-X-From: guile-user-bounces+guile-user=m.gmane.org@gnu.org Sat Jul 12 18:35:57 2014 Return-path: Envelope-to: guile-user@m.gmane.org Original-Received: from lists.gnu.org ([208.118.235.17]) by plane.gmane.org with esmtp (Exim 4.69) (envelope-from ) id 1X60HA-0001Mv-Qx for guile-user@m.gmane.org; Sat, 12 Jul 2014 18:35:53 +0200 Original-Received: from localhost ([::1]:49704 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1X60HA-0005p3-GO for guile-user@m.gmane.org; Sat, 12 Jul 2014 12:35:52 -0400 Original-Received: from eggs.gnu.org ([2001:4830:134:3::10]:39606) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1X60Gs-0005nW-Si for guile-user@gnu.org; Sat, 12 Jul 2014 12:35:39 -0400 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1X60Go-0006NS-QA for guile-user@gnu.org; Sat, 12 Jul 2014 12:35:34 -0400 Original-Received: from mail-wi0-x236.google.com ([2a00:1450:400c:c05::236]:34058) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1X60Go-0006Mi-Gc for guile-user@gnu.org; Sat, 12 Jul 2014 12:35:30 -0400 Original-Received: by mail-wi0-f182.google.com with SMTP id d1so666830wiv.15 for ; Sat, 12 Jul 2014 09:35:29 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=googlemail.com; s=20120113; h=from:to:subject:mail-followup-to:date:message-id:user-agent :mime-version:content-type; bh=0BHbpUmZd3QGl1gXKWte70iP54cCQnap/NqgmCe2830=; b=BCczn8GxiTXAWp6BG6FqUpnH8wAkYy8TlZEhMATMSWhbaabLBZEYgXGCjvesI/bn2k 7CyuSMC8x2jT9p+TkBqemi2be6eMceIBRZIbABME5EfhVT0FdbXiUxTM6W+9qjE/rUTY YbzQhOZWwj4rKUyP1xhh2Uq+Jh5URG4sUGifPfWoWB3Aut7YZcooJ/d9JRxmgC2QVyLz SceUZvAg19JWbqFteMIINy0AbO3AT6OedAbeGp2C75HDDMHZMHb1NYH2DWnmQO9LFdV5 5ZjU84B6ZbeU5x4f/elo0tR6CjLlc5IG5Ep34LjJZNJf1k/+NBF3VuziSPoCZKlVu0u6 ZKmw== X-Received: by 10.194.63.77 with SMTP id e13mr7346928wjs.104.1405182929018; Sat, 12 Jul 2014 09:35:29 -0700 (PDT) Original-Received: from Kagami.home (host217-44-40-122.range217-44.btcentralplus.com. [217.44.40.122]) by mx.google.com with ESMTPSA id ex4sm8441434wic.2.2014.07.12.09.35.26 for (version=TLSv1.2 cipher=RC4-SHA bits=128/128); Sat, 12 Jul 2014 09:35:27 -0700 (PDT) Mail-Followup-To: vicare-users , Guile Users User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/24.1 (gnu/linux) X-detected-operating-system: by eggs.gnu.org: Error: Malformed IPv6 address (bad octet value). X-Received-From: 2a00:1450:400c:c05::236 X-BeenThere: guile-user@gnu.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: General Guile related discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: guile-user-bounces+guile-user=m.gmane.org@gnu.org Original-Sender: guile-user-bounces+guile-user=m.gmane.org@gnu.org Xref: news.gmane.org gmane.lisp.guile.user:11333 Archived-At: Hello, After a long hiatus, today sees the release of the 0.3 version of pfds. * What is it? Pfds is a collection of purely functional data structures written in pure R6RS Scheme. It has been tested on Guile 2.0, Racket 5.3, and trunk IronScheme[0]. There should be no reason for it not to work on other R6RS Schemes. * What's changed? ** Changes to existing modules - (pfds bbtrees) The function 'bbtree-ref' now takes an optional third argument. ** Bug Fixes - (pfds bbtrees) A typo in 'l-to-r-pre-order' referring to a non-existant identifier has been fixed. ** New Modules Since last release, I have added 3 new modules. - (pfds queues naive) For those of you need a queue data structure, but are using it in a mostly linear manner, this implements the simple two list version of queues. It has the same interface as (pfds queues), and so can be used only by changing the import expression. - (pfds deques naive) Similar to the situation with (pfds queues naive). This shares the same interface with (pfds deques), and so you be used by only changing the import expression. - (pfds hamts) Hash Array Mapped Tries or "HAMTS" are a functional map type. Unlike (pfds bbtrees) this uses a hash function, rather than requiring data to be ordered. The documentation is at the top of the file. ** New Docs - doc/dlists A readable explanation of the purpose of dlists. - examples/queues.scm Uses functional queues to a breadth-first search of a tree. ** Administrivia Since last time, I have split all the tests out into a separate file for each datastructure. You can find them in the tests subdirectory. * Where can you get it? Source code is available on github - https://github.com/ijp/pfds/archive/v0.3.zip - https://github.com/ijp/pfds/archive/v0.3.tar.gz Guildhall/Dorodango users can access it from my repository[1] Simply use "guild update" to obtain the latest repository information, and then either "guild install pfds" or "guild upgrade" if you already have version 0.2 installed. * The future SRFI 101 was meant to be added to this release, but I held off just in case I ended up taking another long hiatus. This should be added in 0.4. There is a fair amount of overhead under the hood which can be removed, I will try to improve on this for next release. Better Documentation is going to be a key thing for next release. While I am already picky about documenting the API in a reference style at the top of each file. I would like something which can be more easily HTML-ised and put on my website, and to increase the number of examples. As always, if you have any functional data structures you would like added, that you just want to tell me about, bug reports, feature requests, examples or benchmarks you'd like me to do better on, do email me, or open an issue on github. Cheers, 0. Thanks as always to leppie. 1. If you are not using it already, you can get started by reading https://github.com/ijp/guildhall/wiki/Getting-Started I have not been the most active maintainer of guildhall/dorodango, and for that I apologise. -- Ian Price -- shift-reset.com "Programming is like pinball. The reward for doing it well is the opportunity to do it again" - from "The Wizardy Compiled"