Rob Rix
|
7a03f09fe9
|
Test that comparisons are restricted by nil returns from recur .
|
2015-10-14 16:43:08 -04:00 |
|
Matt Diephouse
|
6eff8d6f82
|
Merge pull request #101 from github/parameterize-algorithm-evaluation-by-comparison-restriction
Parameterize Algorithm evaluation by comparison restriction
|
2015-10-14 16:42:03 -04:00 |
|
Rob Rix
|
e0692770b3
|
Cofree is CustomDebugStringConvertible.
|
2015-10-14 16:40:13 -04:00 |
|
Rob Rix
|
bf48944c83
|
Diff equality.
|
2015-10-14 16:32:01 -04:00 |
|
Rob Rix
|
92ec5b6130
|
Define parameterized equality over TermType.
|
2015-10-14 16:31:32 -04:00 |
|
Rob Rix
|
ed10ec1257
|
Write the fixtures using the typealias.
|
2015-10-14 16:10:23 -04:00 |
|
Rob Rix
|
35617fee70
|
Add typealiases for Diff and Term.
|
2015-10-14 16:09:58 -04:00 |
|
Rob Rix
|
ff559845d8
|
Add a couple of fixtures.
|
2015-10-14 16:07:07 -04:00 |
|
Rob Rix
|
9a6e8dea03
|
Merge branch 'literal-syntax-construction' into restrict-comparisons-by-category
|
2015-10-14 16:03:54 -04:00 |
|
Rob Rix
|
86df4c6a87
|
Syntax is DictionaryLiteralConvertible.
|
2015-10-14 16:03:14 -04:00 |
|
Rob Rix
|
76ca906097
|
Syntax is ArrayLiteralConvertible.
|
2015-10-14 16:02:33 -04:00 |
|
Rob Rix
|
0c78e344ad
|
Stub in a test suite for Algorithm.
|
2015-10-14 15:57:58 -04:00 |
|
Rob Rix
|
124d45a549
|
Cofree has categories when B: Categorizable.
|
2015-10-14 15:49:23 -04:00 |
|
Rob Rix
|
b60abdf5b0
|
Factoring.
|
2015-10-14 15:46:19 -04:00 |
|
Rob Rix
|
3117d26464
|
Fix up the categorization.
|
2015-10-14 15:44:58 -04:00 |
|
Rob Rix
|
6d0bfdb9d0
|
Add an evaluate method parameterized by categorization.
|
2015-10-14 15:43:24 -04:00 |
|
Rob Rix
|
80bda88082
|
Merge branch 'diff-cofree-values' into restrict-comparisons-by-category
Conflicts:
prototype/Doubt/SES.swift
prototype/DoubtTests/SESTests.swift
|
2015-10-14 15:35:18 -04:00 |
|
Rob Rix
|
105b57566b
|
Replace the JSON fixtures with much cooler JSON fixtures.
|
2015-10-14 14:40:47 -04:00 |
|
Rob Rix
|
ed004ca4c1
|
Annotate terms with their sizes.
|
2015-10-14 14:40:21 -04:00 |
|
Rob Rix
|
645e038982
|
Compute the size of syntax trees.
|
2015-10-14 14:32:26 -04:00 |
|
Rob Rix
|
6b781622b6
|
Add the annotations to the JSON.
|
2015-10-14 14:22:19 -04:00 |
|
Rob Rix
|
abd037796a
|
Annotate JSON with integers.
|
2015-10-14 14:21:12 -04:00 |
|
Rob Rix
|
1fc7771918
|
Int is CustomJSONConvertible.
|
2015-10-14 14:20:58 -04:00 |
|
Rob Rix
|
f34af098d3
|
String is CustomJSONConvertible.
|
2015-10-14 14:20:13 -04:00 |
|
Rob Rix
|
29001b713c
|
Diff JSON in Cofree.
|
2015-10-14 14:17:56 -04:00 |
|
Rob Rix
|
07690849a6
|
Convenience for constructing Cofree with autoclosures.
|
2015-10-14 14:17:29 -04:00 |
|
Rob Rix
|
9afc487776
|
Cofree is a TermType.
|
2015-10-14 14:05:43 -04:00 |
|
Rob Rix
|
714f99638e
|
Abstract Algorithm over a Term type.
|
2015-10-14 14:04:47 -04:00 |
|
Rob Rix
|
7e9a41dfbd
|
Make the Roll case indirect.
|
2015-10-14 14:04:35 -04:00 |
|
Rob Rix
|
b8dca6fe2a
|
Call evaluate with equality.
|
2015-10-14 14:03:46 -04:00 |
|
Rob Rix
|
79708346e0
|
Correct the Diff typealias.
|
2015-10-14 14:00:46 -04:00 |
|
Rob Rix
|
3e75895c4d
|
Fix is a TermType.
|
2015-10-14 13:57:21 -04:00 |
|
Rob Rix
|
92cb1927d1
|
Move Term/Diff to the top level.
|
2015-10-14 13:57:12 -04:00 |
|
Rob Rix
|
4fb38d612e
|
Add a constructor for Free over arbitrary TermType.
|
2015-10-14 13:52:43 -04:00 |
|
Rob Rix
|
6f886356aa
|
Add a TermType protocol.
|
2015-10-14 13:52:25 -04:00 |
|
Rob Rix
|
6188a5a2d7
|
Move FreeConvertible to Free.swift.
|
2015-10-14 13:34:29 -04:00 |
|
Rob Rix
|
01b32b010f
|
Rename Algorithm’s A type parameter to Leaf.
|
2015-10-14 13:33:51 -04:00 |
|
Rob Rix
|
31d905ac64
|
Merge branch 'generalize-patch' into diff-cofree-values
|
2015-10-14 13:31:00 -04:00 |
|
Rob Rix
|
436708bb3b
|
🔥 chaff.
|
2015-10-14 13:16:27 -04:00 |
|
Rob Rix
|
09fad58fd7
|
Correct a comment.
|
2015-10-14 12:46:16 -04:00 |
|
Rob Rix
|
b8f8953f1c
|
Return the identity diff when equal.
|
2015-10-14 12:29:40 -04:00 |
|
Rob Rix
|
517c87c303
|
Revert "Revert "SES does not take an equality test.""
This reverts commit bb73f6eac2b59599607369767e9e221e7e5e0f15.
|
2015-10-14 12:28:45 -04:00 |
|
Rob Rix
|
d0d96d569d
|
Revert "Pass the correct equality function to SES."
This reverts commit e78c6cde10ad70e93ab003ceacc07db290b061e4.
|
2015-10-14 12:28:41 -04:00 |
|
Rob Rix
|
432c9f7239
|
Pass the correct equality function to SES.
|
2015-10-14 12:26:25 -04:00 |
|
Rob Rix
|
a7f4d91d56
|
Revert "SES does not take an equality test."
This reverts commit 1db8bdf82c85a490188882b810cd9c516e4f210e.
Conflicts:
prototype/Doubt/SES.swift
prototype/DoubtTests/SESTests.swift
|
2015-10-14 12:25:38 -04:00 |
|
Rob Rix
|
8d4a91d3a9
|
Merge branch 'parameterize-algorithm-evaluation-by-comparison-restriction' into generalize-patch
Conflicts:
prototype/Doubt/SES.swift
prototype/DoubtTests/SESTests.swift
|
2015-10-14 12:24:04 -04:00 |
|
Rob Rix
|
6e5335c915
|
SES tests operate over strings.
|
2015-10-14 12:19:38 -04:00 |
|
Rob Rix
|
0acdd16db3
|
Generalize SES to arbitrary arrays.
|
2015-10-14 12:18:49 -04:00 |
|
Rob Rix
|
34258b98b8
|
Generalize Patch from Fix<A> to A .
|
2015-10-14 12:17:39 -04:00 |
|
Rob Rix
|
e33f733d83
|
SES does not take an equality test.
|
2015-10-14 12:14:15 -04:00 |
|
Rob Rix
|
da11e0983a
|
Don’t test equality in SES.
|
2015-10-14 12:11:03 -04:00 |
|
Rob Rix
|
964204a3e6
|
Rename the PatchConvertible associated type to Element.
|
2015-10-14 12:02:57 -04:00 |
|
Rob Rix
|
ef5720ad17
|
Add a typealias representing the type of patches.
|
2015-10-14 11:56:30 -04:00 |
|
Rob Rix
|
49fb97594a
|
Move Operation’s Functor implementation to a separate extension.
|
2015-10-14 11:43:17 -04:00 |
|
Rob Rix
|
c9134b5867
|
Move Operation into its own file.
|
2015-10-14 11:40:43 -04:00 |
|
Rob Rix
|
ff2c904888
|
Abstract Operation over Term and Diff types.
|
2015-10-14 11:39:56 -04:00 |
|
Rob Rix
|
79969bb69d
|
Move FreeConvertible into Free.swift.
|
2015-10-14 11:24:23 -04:00 |
|
Rob Rix
|
1cc879dc5d
|
Merge branch 'master' into restrict-comparisons-by-category
|
2015-10-14 11:19:26 -04:00 |
|
Rob Rix
|
b9ac0d3c38
|
JSON property for cofree over CustomJSONConvertible types.
|
2015-10-14 11:01:41 -04:00 |
|
Rob Rix
|
8f86f9ab76
|
Parameterized JSON conversion for Cofree.
|
2015-10-14 10:59:41 -04:00 |
|
Rob Rix
|
e70cbe4235
|
Algebraic hashing over cofrees of Hashable types.
|
2015-10-14 10:57:25 -04:00 |
|
Rob Rix
|
db57734586
|
Parameterized hashing over Cofree.
|
2015-10-14 10:56:25 -04:00 |
|
Rob Rix
|
3dcfbc0d38
|
Equality over Cofrees of equatable types.
|
2015-10-14 10:53:29 -04:00 |
|
Rob Rix
|
889dab1df2
|
Parameterized equality over Cofree.
|
2015-10-14 10:52:27 -04:00 |
|
Rob Rix
|
84ea5248e3
|
Unroll does not need to be indirect.
|
2015-10-14 10:49:05 -04:00 |
|
Rob Rix
|
8f3ae52d29
|
Cofree’s recurrence is lazy.
|
2015-10-14 10:48:42 -04:00 |
|
Rob Rix
|
c8234d27a4
|
Document coiterate.
|
2015-10-14 10:44:53 -04:00 |
|
Rob Rix
|
c13023b85b
|
Add a constructor annotating terms into Cofrees.
|
2015-10-14 10:39:21 -04:00 |
|
Rob Rix
|
961e9ae7d7
|
Implement coiteration.
|
2015-10-14 10:39:01 -04:00 |
|
Rob Rix
|
fa2bfcd367
|
duplicate() is just extend(id) .
|
2015-10-14 10:24:16 -04:00 |
|
Rob Rix
|
5015238546
|
Document Cofree.document() .
|
2015-10-14 10:23:43 -04:00 |
|
Rob Rix
|
b50ebdf21a
|
Document Cofree.extend() .
|
2015-10-14 10:22:04 -04:00 |
|
Rob Rix
|
011719b752
|
map ’s transformation function is @noescape .
|
2015-10-14 10:20:21 -04:00 |
|
Rob Rix
|
2c56ee66ea
|
extend ’s transformation function is @noescape .
|
2015-10-14 10:20:05 -04:00 |
|
Rob Rix
|
7bff8f6f50
|
Document Cofree.extract .
|
2015-10-14 10:19:38 -04:00 |
|
Rob Rix
|
ab3d297d95
|
Document Cofree.
|
2015-10-14 10:19:02 -04:00 |
|
Rob Rix
|
6774213fcd
|
Cofree is a Functor.
|
2015-10-14 10:09:38 -04:00 |
|
Rob Rix
|
a606d9d798
|
Implement duplicate on Cofree.
|
2015-10-14 10:03:42 -04:00 |
|
Rob Rix
|
1a44f29778
|
Cofree.extend is public.
|
2015-10-14 10:01:26 -04:00 |
|
Rob Rix
|
cc805f6610
|
Cofree.extract is public.
|
2015-10-14 10:01:19 -04:00 |
|
Rob Rix
|
26f0ea419d
|
Implement extend on Cofree.
|
2015-10-14 10:00:16 -04:00 |
|
Rob Rix
|
ab554c52a0
|
Unwrap Cofrees.
|
2015-10-14 09:59:04 -04:00 |
|
Rob Rix
|
3985ef0fea
|
Unroll should be indirect.
|
2015-10-14 09:56:46 -04:00 |
|
Rob Rix
|
59dd626361
|
Add a Syntax to Cofree.
|
2015-10-14 09:43:51 -04:00 |
|
Rob Rix
|
0d662ade08
|
Implement extract on Cofree .
|
2015-10-14 09:43:23 -04:00 |
|
Rob Rix
|
a83f77116d
|
Add an Unroll case to Cofree.
|
2015-10-14 09:42:21 -04:00 |
|
Rob Rix
|
59b60947f9
|
Stub in Cofree.
|
2015-10-14 09:34:18 -04:00 |
|
Rob Rix
|
3238bc14bd
|
Rename Category.swift to Categorizable.swift.
|
2015-10-14 09:02:38 -04:00 |
|
Rob Rix
|
c7ef3cc586
|
Remove Category.
|
2015-10-14 09:02:21 -04:00 |
|
Rob Rix
|
1f40f40869
|
Info just uses Strings as its categories.
|
2015-10-14 09:02:00 -04:00 |
|
Rob Rix
|
4d07ed6fe7
|
String is CustomJSONConvertible.
|
2015-10-14 09:01:41 -04:00 |
|
Rob Rix
|
a68ad254d5
|
Inheritances are in alphabetical order.
|
2015-10-14 08:59:56 -04:00 |
|
Rob Rix
|
58c0a7ff2c
|
Categories can be of any Hashable type.
|
2015-10-14 08:59:19 -04:00 |
|
Rob Rix
|
59b7d60349
|
Move Term and Diff to the top level.
|
2015-10-13 21:45:48 -04:00 |
|
Rob Rix
|
7b517af351
|
Convenience for A: Categorizable, A: Equatable, B == Diff<A>.
|
2015-10-13 21:41:41 -04:00 |
|
Rob Rix
|
f4dda1c315
|
If A is Categorizable, require empty categories or non-intersecting sets of categories.
|
2015-10-13 21:41:20 -04:00 |
|
Rob Rix
|
2c3716d91c
|
Don’t provide a default implementation of categories .
|
2015-10-13 21:40:12 -04:00 |
|
Rob Rix
|
8190064f48
|
Terms have categories.
|
2015-10-13 21:36:14 -04:00 |
|
Rob Rix
|
30d1a5dee2
|
Info is Categorizable.
|
2015-10-13 21:33:42 -04:00 |
|
Rob Rix
|
346a4e17c7
|
Categorizable types have categories .
|
2015-10-13 21:33:24 -04:00 |
|
Rob Rix
|
088624118b
|
Stub in a Categorizable protocol.
|
2015-10-13 21:33:01 -04:00 |
|
Rob Rix
|
4454f4b04f
|
Document Category, sorta.
|
2015-10-13 21:29:04 -04:00 |
|
Rob Rix
|
02c33cc006
|
Merge branch 'master' into charge-a-constant-cost-to-patches
|
2015-10-13 21:14:42 -04:00 |
|
Rob Rix
|
f2826c3bd2
|
Merge branch 'master' into parameterize-algorithm-evaluation-by-comparison-restriction
|
2015-10-13 21:14:30 -04:00 |
|
Rob Rix
|
fca262a6b2
|
Remove the submodule.
|
2015-10-13 21:10:20 -04:00 |
|
Rob Rix
|
1dcd2aea59
|
Remove the plist.
|
2015-10-13 21:08:37 -04:00 |
|
Rob Rix
|
77022447ea
|
Remove the fixtures.
|
2015-10-13 21:08:29 -04:00 |
|
Rob Rix
|
877fa88177
|
Remove the scheme.
|
2015-10-13 21:08:13 -04:00 |
|
Rob Rix
|
d3cb848d87
|
Remove doubt-swift’s dependencies from the workspace.
|
2015-10-13 21:07:02 -04:00 |
|
Rob Rix
|
368e700c1a
|
Remove doubt-swift from the project.
|
2015-10-13 21:06:40 -04:00 |
|
Rob Rix
|
9b66e550f3
|
Delete the doubt-swift target.
|
2015-10-13 21:06:21 -04:00 |
|
Rob Rix
|
24bf8f4497
|
Merge branch 'parameterize-algorithm-evaluation-by-comparison-restriction' into charge-a-constant-cost-to-patches
|
2015-10-13 18:35:43 -04:00 |
|
Rob Rix
|
7b37db6943
|
Replace the UI fixture.
|
2015-10-13 18:27:12 -04:00 |
|
Rob Rix
|
7786b8c40f
|
Remove the Patch.cost property.
|
2015-10-13 18:20:11 -04:00 |
|
Rob Rix
|
ee0f8765aa
|
Charge a constant cost to Patch es.
|
2015-10-13 18:19:56 -04:00 |
|
Rob Rix
|
4ea9aab8b2
|
Simplify control flow around recur /replace .
|
2015-10-13 18:14:20 -04:00 |
|
Rob Rix
|
a15687dca3
|
Correct a test fixture.
I am unbelievably glad to be rid of this.
|
2015-10-13 18:05:28 -04:00 |
|
Rob Rix
|
5f395c55cf
|
Disallow diagonal edges.
This technically still allows (in fact, requires) them for equal
elements, but it will never construct `Patch.Replace`.
|
2015-10-13 18:05:11 -04:00 |
|
Rob Rix
|
5771d7caf5
|
Merge branch 'master' into parameterize-algorithm-evaluation-by-comparison-restriction
|
2015-10-13 17:55:52 -04:00 |
|
Rob Rix
|
92cb10379f
|
Document the decision a little further.
|
2015-10-13 17:55:47 -04:00 |
|
Rob Rix
|
9f498f1099
|
Formatting.
|
2015-10-13 17:55:02 -04:00 |
|
Rob Rix
|
10122d62da
|
Abbreviate the selection of the best outgoing edge.
|
2015-10-13 17:53:04 -04:00 |
|
Rob Rix
|
6cbe0a18d3
|
Extract diagonal.
|
2015-10-13 17:51:03 -04:00 |
|
Rob Rix
|
32bfdc6766
|
Factor out right/down.
|
2015-10-13 17:50:22 -04:00 |
|
Rob Rix
|
e09d46d109
|
nil responses restrict the traversal of diagonal edges.
|
2015-10-13 17:45:22 -04:00 |
|
Rob Rix
|
90b22cf9a8
|
Allow recurrence to opt out of comparing nodes by returning nil .
|
2015-10-13 17:40:14 -04:00 |
|
Rob Rix
|
873a8e668f
|
Add a function to construct the replacement of one term by another.
|
2015-10-13 17:38:36 -04:00 |
|
Josh Vera
|
3211714bb2
|
Merge pull request #98 from github/side-by-side-diffs
Side by side diffs
|
2015-10-13 16:41:39 -04:00 |
|
Rob Rix
|
c455b59cbb
|
Note Xcode 7 requirement.
|
2015-10-13 16:34:03 -04:00 |
|
Rob Rix
|
7825e83ed2
|
Add a readme for the prototype.
|
2015-10-13 16:33:39 -04:00 |
|
Rob Rix
|
b9d96134ea
|
Merge branch 'master' into side-by-side-diffs
|
2015-10-13 13:18:05 -04:00 |
|
Rob Rix
|
f1bb19be12
|
Grey backgrounds for replacements.
|
2015-10-13 13:17:18 -04:00 |
|
Josh Vera
|
bd4f1e7fc1
|
Merge pull request #83 from github/recur-into-keyed-terms-with-equal-keys
Recur into Keyed terms with equal keys
|
2015-10-13 13:16:56 -04:00 |
|
joshvera
|
d2d2412260
|
Merge branch 'master' into recur-into-indexed-terms-of-equal-length
|
2015-10-13 13:03:13 -04:00 |
|
Matt Diephouse
|
692bb05a4e
|
Merge pull request #96 from github/generalize-array-extension
Generalize array extension
|
2015-10-13 12:48:20 -04:00 |
|
Rob Rix
|
c0ab5abd9f
|
Drop the outline from replacements.
|
2015-10-13 12:44:25 -04:00 |
|
Rob Rix
|
fad02bab81
|
Give replacements a background colour.
|
2015-10-13 11:47:07 -04:00 |
|
Rob Rix
|
4ed33b485a
|
Background colours for insertions/deletions.
|
2015-10-13 11:43:25 -04:00 |
|
Rob Rix
|
2a671d5403
|
Change up the outline colours.
|
2015-10-13 11:43:17 -04:00 |
|
Rob Rix
|
67a19682e8
|
HIghlight replacements.
|
2015-10-13 11:25:20 -04:00 |
|
Rob Rix
|
7aab1da72c
|
Shift things to either side.
|
2015-10-13 11:24:55 -04:00 |
|
Rob Rix
|
dd05a2d5ee
|
Skip empty branches.
|
2015-10-13 11:24:08 -04:00 |
|
Rob Rix
|
91093f1aac
|
Only wrap elements that exist.
|
2015-10-13 11:22:56 -04:00 |
|
Rob Rix
|
ec9c29e29d
|
Only add children that exist.
|
2015-10-13 11:22:34 -04:00 |
|
Rob Rix
|
b10f4e2507
|
Don’t float things.
|
2015-10-13 11:20:54 -04:00 |
|
Rob Rix
|
b5f8516ab7
|
Leaves are wrapped in paragraphs.
|
2015-10-13 11:16:52 -04:00 |
|
Rob Rix
|
6a9e71fcd5
|
Arrays wrap their children in <li> elements.
|
2015-10-13 11:15:33 -04:00 |
|
Rob Rix
|
69568fb622
|
Arrays add <ol> elements.
|
2015-10-13 11:15:23 -04:00 |
|
Rob Rix
|
208238ae6e
|
Add a function to wrap a node in another node.
|
2015-10-13 11:10:54 -04:00 |
|
Rob Rix
|
0dcecb9a00
|
Rename the DOM variable.
|
2015-10-13 11:09:30 -04:00 |
|