Commit Graph

171 Commits

Author SHA1 Message Date
3f06553f7f Allow fibers as map keys. 2015-05-03 11:12:17 -07:00
fcf4197139 Add Object.same(_,_) to access built-in equality even for classes that may override ==.
Had to add a new metaclass for Object since it now has its own static method so we
can't just use Class as its metaclass. (We don't want *every* class to have a same(_,_)
static method.)
2015-05-01 07:55:28 -07:00
1c5a2b03c1 Copy edit a bit. 2015-04-25 08:48:06 -07:00
f0d1b73fa3 Add a Community page
Closes #257.
2015-04-23 17:46:18 -05:00
4147ef2500 Merge pull request #259 from minirop/import-keyword
added missing "import" keyword
2015-04-22 07:46:13 -07:00
7c1ede0a3d Merge branch 'master' of https://github.com/munificent/wren 2015-04-22 07:45:39 -07:00
bfce24151e Tweak docs. 2015-04-22 07:45:20 -07:00
701e97510a added missing "import" keyword 2015-04-19 23:13:40 +02:00
c3497ee840 Code review changes. 2015-04-19 13:32:15 -07:00
d59031d614 Some documentation updates
Some Sequence.list references remained after it was renamed to
Sequence.toList.
2015-04-06 17:21:32 +02:00
d0bebbd380 Add docs for fiber.call. 2015-04-04 16:50:40 -07:00
1cd83eccbc Add docs for fn.call. 2015-04-04 15:29:10 -07:00
e754fcc49f Add docs for list.insert. 2015-04-04 15:23:16 -07:00
62e76a5780 Fix broken link to wren.h 2015-04-04 00:51:42 +02:00
b46828e93e Update docs for map(_) and where(_). 2015-04-01 07:31:15 -07:00
f4a836c66e Merge branch 'deferred_execution' of git://github.com/bjorn/wren into bjorn-deferred_execution
Conflicts:
	builtin/core.wren
	src/vm/wren_core.c
2015-04-01 07:22:02 -07:00
561d46ef1d Merge pull request #241 from bjorn/sequence_each
Added Sequence.each
2015-04-01 07:10:21 -07:00
a8ea2a91a6 Use deferred execution for Sequence.map and Sequence.where
The methods Sequence.map and Sequence.where are now implemented using
deferred execution. They return an instance of a new Sequence-derived
class that performs the operation while iterating. This has three main
advantages:

* It can be computationally cheaper when not the whole sequence is
  iterated.

* It consumes less memory since it does not store the result in a newly
  allocated list.

* They can work on infinite sequences.

Some disadvantages are:

* Iterating the returned iterator will be slightly slower due to
  the added indirection.

* You should be aware that modifications made to the original sequence
  will affect the returned sequence.

* If you need the result in a list, you now need to call Sequence.list
  on the result.
2015-03-31 22:25:07 +02:00
c00d6ad694 Added Sequence.each
This is a bit of a style preference since of course you can always write
the same thing with a for loop. However, I think sometimes the code
looks better when using this method.

It also provides an alternative to Sequence.map for cases where you
don't need the resulting list, and one that becomes especially necessary
when Sequence.map is changed to return a new sequence. The example in
the README.md file was using Sequence.map in a way that required this
alternative in that case.
2015-03-31 21:53:29 +02:00
07f9d4d2be Tweak Sequence.all() and Sequence.any().
When possible, they return the actual value from the predicate
instead of always just "true" and "false". This matches && and ||
which evaluate to the RHS or LHS when appropriate.
2015-03-28 10:18:45 -07:00
53ee453f0f Merge pull request #239 from bjorn/sequence_list
Added Sequence.list
2015-03-28 09:06:49 -07:00
5bb3154e83 Copy editing. 2015-03-27 20:59:15 -07:00
72c38a59ce More stuff for working with strings and bytes!
- "\x" escape sequence to put byte values in strings: "\x34"
- String.byteAt(index) gets value of byte in string.
- String.bytes returns a raw sequence of bytes for a string.
- String.codePointAt(index) gets the code point at an offset as a raw number.
2015-03-27 20:44:07 -07:00
b409569b6f Added Sequence.list
This helper method turns any sequence into a List.
2015-03-27 22:59:58 +01:00
7d45dda383 String.fromCodePoint(). Fix #219. 2015-03-27 07:43:36 -07:00
373770a8d5 Fields are private, not protected. Fix #237. 2015-03-27 06:46:12 -07:00
0bd19da392 Bind C methods to Wren using foreign declarations. 2015-03-24 07:58:15 -07:00
c9226256ff Merge pull request #220 from bjorn/count_predicate
Added Sequence.count(predicate)
2015-03-23 07:35:17 -07:00
1301410142 Merge branch 'num_methods' of git://github.com/bjorn/wren into bjorn-num_methods 2015-03-21 12:54:08 -07:00
07951bbeae Added Num.pi and some tests 2015-03-19 21:12:50 +01:00
94804fe1a0 Added Sequence.count(predicate)
Returns the number of elements in the sequence that pass the
`predicate`.

It could also have been implemented as:

  count(f) { reduce(0) {|a, b| f.call(b) ? a + 1 : a } }

But I considered the simple version more readable.

Also documented Sequence.count.
2015-03-19 21:10:05 +01:00
a3abf31da0 Merge pull request #222 from bjorn/sequence_contains
Moved List.contains to Sequence.contains, added tests and docs
2015-03-18 07:54:55 -07:00
3383d06ca3 Merge pull request #213 from RickGlimmer/master
Fix unreachable links for IE11 (edge mode)
2015-03-18 07:52:31 -07:00
d7a91117ac Reverse the argument order of List.insert
The previous order, insert(element, index), was counter-intuitive.
I'm not aware of any list API that uses this order. I've checked:

* Ruby Array.insert(index, obj...)
* JavaScript array.splice(start, deleteCount[, item1[, item2[, ...]]])
* C++ / QList::insert(int i, const T & value)
* C++ / std::vector::insert
* Lua table.insert (list, [pos,] value)
* C# List<T>.Insert(int index, T item)
* Java Interface List<E>.add(int index, E element)
* Python list.insert(i, x)

So it seemed to me more like an oversight in Wren.
2015-03-15 22:51:24 +01:00
1099c75c77 Added Num.atan(x)
Maps to the C function atan2.
2015-03-15 16:43:02 +01:00
42dd7cdad4 Added more goniometry Num methods
Num.acos
Num.asin
Num.atan
2015-03-15 16:29:56 +01:00
09bcf5ad98 Added Num.tan
Strange omission with Num.sin and Num.cos already available.
2015-03-15 16:29:56 +01:00
fc1dc4c54b Moved List.contains to Sequence.contains, added tests and docs 2015-03-15 15:59:42 +01:00
64eccdd9be Reorganize tests and benchmark scripts.
Mainly to get rid of one top level directory. But this will
also be useful when there are tests of the embedding API.
2015-03-14 12:45:56 -07:00
5459993857 Add Class.supertype.
Thanks, Michel!
2015-03-14 09:48:45 -07:00
f7849244a8 Tighten up operator table a bit. 2015-03-13 07:56:47 -07:00
860616244e Tweak precedence table styles a bit. 2015-03-13 07:24:45 -07:00
337ef467ed Add operator precedence table to documentation 2015-03-09 11:36:15 -04:00
958a85fc31 Fix unreachable links for IE11 (edge mode)
This corrects the flow of content. As main did not have a float style it
overlapped the nav tag making the links unreachable in IE11.
2015-03-08 15:59:59 +00:00
05ba7d9fbf Add fiber features needed for to write an external scheduler:
- Allow yielding the main fiber. This exits the interpreter. The
  host can resume it by calling a method.
- Allow getting a reference to the current fiber.
2015-03-07 12:32:11 -08:00
90aa43450b Merge branch 'master' of git://github.com/bjorn/wren into bjorn-master 2015-03-03 07:23:47 -08:00
f10e0121b6 Two small doc fixes
* Fixed inconsistency in Lua vs. Wren example
* Fixed broken sentence
2015-03-01 23:14:32 +01:00
8f985847d4 Added Sequence.any as complement to Sequence.all 2015-03-01 23:14:32 +01:00
ff9091cf63 Tweak static field docs a bit. 2015-03-01 08:39:53 -08:00
7bed58ecf3 doc/site/classes.markdown: add static fields example 2015-02-28 11:26:18 -05:00