ocaml-batteries-team / batteries-included Goto Github PK
View Code? Open in Web Editor NEWBatteries Included project
Home Page: http://ocaml-batteries-team.github.com/batteries-included/hdoc2/
License: Other
Batteries Included project
Home Page: http://ocaml-batteries-team.github.com/batteries-included/hdoc2/
License: Other
This module would be ('a, 'b), and would have things like range checking for (int, int), printing pairs, sorting lexicographically, etc.
The ocamldoc
-generated documentation has a few artifacts that seem to be from older (pre-AAA) Batteries or Extlib that decrease clarity and, in some cases, usability.
BatArray
BatPervasives
refers to modules such as String
and Int32
, but these references are not links anywhere)BatPervasives
mentions Standard
; this is not linked, nor explainedAlso, the Batteries
module is not included in the documentation; this may contribute to some of the delinking (although I am not sure).
I have a small Batteries-using program, linked against the threaded Batteries, that primarily uses BatEnum
and BatIO
. It hangs when it's ready to shut down; strace
reports that this is in a futex
call. Replacing Mutex
with RMutex
in the synchronization setup code in batteries.ml
fixes this problem, but I don't think this is the desirable solution if it can be avoided.
Update: this has been fixed to a working level in a7174ad; this ticket now serves to say that we should look at BatIO
/BatInnerIO
(and other lockable modules) to see whether the recursive locking can be eliminated.
compare empty empty returns -1 !!!
I ran omake all and omake test, both seemed to work. But sudo omake install failed, see the output below:
$ uname -a
Darwin Arbus.local 10.2.0 Darwin Kernel Version 10.2.0: Tue Nov 3 10:37:10 PST 2009; root:xnu-1486.2.11~1/RELEASE_I386 i386
$ sudo omake install
*** omake: reading OMakefiles
*** omake: finished reading OMakefiles (0.11 sec)
Are we using exceptions consistently? Are the exceptions we raise compatible with anything?
Do they break Stdlib code?
Do they break Extlib code?
Should camomile be completely subsumed in the batteries interface?
Is this important once 3.12 comes with its local open capability? pa_do provides other features, but are they still compelling?
This should be straightforward using the existing Foo.print functions and a string_output, but should be done
We can have nice printers for ropes and unicode strings w/o camlp4, can we have unicode literals w/o camlp4?
The BatLogger
module uses Pervasives.{in,out}_channel
s rather than InnerIO channels.
Fixing this will be a breaking API change.
For interoperability with libraries that don't use Batteries, it would be useful to have functions to open and close legacy I/O channels.
The documentation build fails if the hdoc
directory does not exist, and updating an mli file does not force enough of a doc rebuild to get the documentation change through to the HTML.
Maybe through Enum, maybe duplicating Foo.enum?
It would be good to install the .cmx
files as well as the .cmi
and .cm{a,xa}
files. If the .cmx
files are present, then the native-code compiler can do cross-module inlining.
What should be done with this? Does anyone use it with batteries / want to use it with batteries? How can batteries benefit from camlnet?
batteries.cma is created but not installed in batteries-1.1 (but fine in 1.0.1).
Manually copying the batteries.cma (and associated files) fixes the installation.
batteries_uni.* doesn't have the same problem.
This would make a great addition to batteries, but how should this be done? Should it stay a separate project, or could it become a subproject of batteries?
I have some code that looks like this:
let ve, we = Enum.uncombine (List.enum list_of_pairs) in
Array.of_enum ve, Array.of_enum we
The resulting arrays are incorrect, compare with the result of this code (which works):
let arr = Array.of_list list_of_pairs in
let vs = Array.map fst trunc in
let ws = Array.map snd trunc in
(vs,ws)
I have not tried using Enum.dup and Enum.map to achieve the effect; that should help narrow down the problem.
Several of the BatBigarray functions make c_layout indexing assumptions (indexing from 0 rather than 1 as for fortran_layout). For example, some of the Array*.map functions assume this.
Many tags used in batteries ocamldoc were handled by custom handler - how should we deal with this?
I gave the recently release 1.0 a try. It seems that a lot of documents available in the prior release have gone missing. For example, I cannot find any information about the syntax extensions now. And #man cannot find anything useful. The reason seems to be that the html/api/*.idex files are missing.
Bigarray.Array3.mapijk should take a mapping function with a signature:
(int -> int -> int -> 'a -> 'b)
Instead, it currently takes:
(int -> int -> 'a -> 'b)
The third index is missing. This is most likely a one line fix in the .ml file, and a line or few in the corresponding .mli.
Reported by bmp on #ocaml. http://paste.lisp.org/display/95932#1
running findlib 1.2.5, ocaml 3.11.2, batteries 1.0.1 (same problem with 1.1.0 after fixing install bug)
We have IMap,ISet,PMap,PSet, etc. PMap/set should be inside Map/set to mirror Hashtbl's structure. As well, IMap/ISet could be integrated too.
By default, operators starting with < are left-associative, but <| should be right-associative. We'll probably need camlp4 to fix this, so it's low priority.
Make sure examples/ subfolders work under 1.0.0
This seems to be overlooked in batHashtbl.mli
Many batFoo modules only provide a few new functions, so the batteries documentation doesn't cover the stdlib functions. Can we provide links to the reference manual for these modules?
Need to be able to godi-install aaa-batteries
BatPervasives.input_line
is documented to rase End_of_file
if the end of the file is reached, like the original Pervasives.input_line
. However, since it simply delegates to IO.read_line
, it raises IO.No_more_input
. One of the two (documentation or code) should be fixed. I would likely prefer code, as it makes porting existing code easier.
Don't use the stdlib's set/map for everything, as it's a pain to extend because of having to break abstraction. Include implementations of various Tree types to be plugged into set/map through functors, with a good default.
example in BatList: To take advantage of these overrides, you probably want to or . For instance, to open a version of List with exceptionless error management, you may write
open List, Exceptionless
What can we do better with 1st class modules?
This is useful for efficiency, but dangerous, as many byte indexes aren't valid character indexes. How should we handle it?
Fix META file to do this by removing requires= line without (mt)? Needs testing.
Should this have a different style - people will likely miss it, no?
We should provide monadic interfaces to our data structures so LWT can interface with them better
The current HEAD fails to install native code in one of my GODI environments; reverting back to dac9f98 fixes it. Not sure what's up, and I haven't tested on other systems yet.
Can we reduce the number of dependencies of BatIO? Or is the large filesize just a consequence of its Unicode capabilities?
When '#man "batteries"' is entered in the top level, the url "file:///usr/share/doc/ocaml-batteries/html/index.html" is opened in the default web browser. The real address, however, should be "file:///usr/share/doc/ocaml-batteries/index.html".
What should happen on the last line of a file that doesn't end in \n?
Issue title says it all. :)
I get alternating 01010101 patterns when I use BitSet.create_full - should be 11111111
Can AAA even generate documentation?
When native code compilation is disabled, as documented in the README, batteries installation fails with the following error.
ocamlfind: src/*.a: No such file or directory
I'll follow-up with the patch I'm going to apply to the Debian package.
Cheers.
What has to be done to use AAA in the toplevel?
These were an old organization of the core modules into batteries framework.
[open Batteries] opens a default batteries where you can ask for labeled arguments. How about a [open BatteriesLabel] which automatically opens all the labeled versions of functions.
What would this work like in the documentation?
Could this be made the default, with everything having labels?
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.