| Crates.io | synox |
| lib.rs | synox |
| version | 0.1.0 |
| created_at | 2021-06-29 01:19:58.502774+00 |
| updated_at | 2021-06-29 01:19:58.502774+00 |
| description | Program synthesis of string transformations from input-output examples. |
| homepage | https://github.com/anishathalye/synox |
| repository | https://github.com/anishathalye/synox.git |
| max_upload_size | |
| id | 415989 |
| size | 77,125 |
Synox implements program synthesis of string transformations from input-output examples. Perhaps the most well-known use of string program synthesis in end-user programs is the Flash Fill feature in Excel. These string transformations are learned from input-output examples.
Synox currently implements BlinkFill (Singh '16, in Proc. VLDB), an algorithm similar to Flash Fill.
Add this to your Cargo.toml:
[dependencies]
synox = "0.1"
Consider the following table, with a missing entry in an output column.
| Name | Graduation Year | Output |
|---|---|---|
| Alyssa P. Hacker | 1985 | A. Hacker '85 |
| Ben Bitdiddle | 2002 | B. Bitdiddle '02 |
| Cy D. Fect | 2017 | ? |
Synox can infer a program that automatically fills in the missing entry with "C. Fect '17".
use synox::StringProgram;
use synox::blinkfill;
let unpaired: &[Vec<&str>] = &[];
let examples = &[(vec!["Alyssa P. Hacker", "1985"], "A. Hacker '85" ),
(vec!["Ben Bitdiddle", "2002"], "B. Bitdiddle '02")];
let prog = blinkfill::learn(unpaired, examples)?;
let result = prog.run(&["Cy D. Fect", "2017"])?;
assert_eq!(result, "C. Fect '17");
Copyright (c) 2021 Anish Athalye. Released under the MIT License. See LICENSE.md for details.