Skip to content

Instantly share code, notes, and snippets.

@dotnetCarpenter
Last active April 27, 2022 18:52
Show Gist options
  • Save dotnetCarpenter/a52ff00f8d9a1cf1fcff23114a0fabea to your computer and use it in GitHub Desktop.
Save dotnetCarpenter/a52ff00f8d9a1cf1fcff23114a0fabea to your computer and use it in GitHub Desktop.
Using S.Pair is at least 80% slower than using an Array 2-tuplet, in this simple parsing test using S.reduce.
export default [
{ value: 'lookWeights', type: 8 },
{ value: 50, type: 16 },
{ value: 43, type: 16 },
{ value: 7, type: 16 },
{ value: 0, type: 16 },
{ value: 'maleFirst', type: 8 },
{ value: 'Adrian', type: 16 },
{ value: 'Aleksander', type: 16 },
{ value: 'Alexander', type: 16 },
{ value: 'Alf', type: 16 },
{ value: 'Alfred', type: 16 },
{ value: 'Anders', type: 16 },
{ value: 'Andreas', type: 16 },
{ value: 'Anton', type: 16 },
{ value: 'Arne', type: 16 },
{ value: 'Artur', type: 16 },
{ value: 'Arvid', type: 16 },
{ value: 'Asbjoorn', type: 16 },
{ value: 'Atle', type: 16 },
{ value: 'Balder', type: 16 },
{ value: 'Baldur', type: 16 },
{ value: 'Benjamin', type: 16 },
{ value: 'Bjorn', type: 16 },
{ value: 'Boone', type: 16 },
{ value: 'Borg', type: 16 },
{ value: 'Brander', type: 16 },
{ value: 'Burnaby', type: 16 },
{ value: 'Burr', type: 16 },
{ value: 'Busby', type: 16 },
{ value: 'Cadby', type: 16 },
{ value: 'Canute', type: 16 },
{ value: 'Carr', type: 16 },
{ value: 'Cawley', type: 16 },
{ value: 'Christian', type: 16 },
{ value: 'Christoffer', type: 16 },
{ value: 'Colby', type: 16 },
{ value: 'Dag', type: 16 },
{ value: 'Danby', type: 16 },
{ value: 'Delling', type: 16 },
{ value: 'Daniel', type: 16 },
{ value: 'Didrik', type: 16 },
{ value: 'Edvard', type: 16 },
{ value: 'Einar', type: 16 },
{ value: 'Eirik', type: 16 },
{ value: 'Elvis', type: 16 },
{ value: 'Emil', type: 16 },
{ value: 'Eric', type: 16 },
{ value: 'Erik', type: 16 },
{ value: 'Erlend', type: 16 },
{ value: 'Erling', type: 16 },
{ value: 'Espen', type: 16 },
{ value: 'Even', type: 16 },
{ value: 'Fredrik', type: 16 },
{ value: 'Frode', type: 16 },
{ value: 'Gunnar', type: 16 },
{ value: 'Haakon', type: 16 },
{ value: 'Haavard', type: 16 },
{ value: 'Hans', type: 16 },
{ value: 'Harald', type: 16 },
{ value: 'Havard', type: 16 },
{ value: 'Henning', type: 16 },
{ value: 'Henrik', type: 16 },
{ value: 'Inge', type: 16 },
{ value: 'Ivar', type: 16 },
{ value: 'Jakob', type: 16 },
{ value: 'Jan', type: 16 },
{ value: 'Jens', type: 16 },
{ value: 'Joachim', type: 16 },
{ value: 'Joakim', type: 16 },
{ value: 'Johan', type: 16 },
{ value: 'Jokkum', type: 16 },
{ value: 'Jon', type: 16 },
{ value: 'Jonas', type: 16 },
{ value: 'Jorgen', type: 16 },
{ value: 'Julius', type: 16 },
{ value: 'Kare', type: 16 },
{ value: 'Karl', type: 16 },
{ value: 'Kjell', type: 16 },
{ value: 'Knut', type: 16 },
{ value: 'knute', type: 16 },
{ value: 'Kristian', type: 16 },
{ value: 'Kristoffer', type: 16 },
{ value: 'Lars', type: 16 },
{ value: 'Leif', type: 16 },
{ value: 'Ludvik', type: 16 },
{ value: 'Mads', type: 16 },
{ value: 'Magnus', type: 16 },
{ value: 'Marcus', type: 16 },
{ value: 'Marius', type: 16 },
{ value: 'Martin', type: 16 },
{ value: 'Martinus', type: 16 },
{ value: 'Mathias', type: 16 },
{ value: 'Matias', type: 16 },
{ value: 'Mats', type: 16 },
{ value: 'Mikkel', type: 16 },
{ value: 'Mons', type: 16 },
{ value: 'Nikolai', type: 16 },
{ value: 'Nils', type: 16 },
{ value: 'Olaf', type: 16 },
{ value: 'Olan', type: 16 },
{ value: 'Ole', type: 16 },
{ value: 'Pal', type: 16 },
{ value: 'Paul', type: 16 },
{ value: 'Peder', type: 16 },
{ value: 'Per', type: 16 },
{ value: 'Petter', type: 16 },
{ value: 'Reidar', type: 16 },
{ value: 'Rolf', type: 16 },
{ value: 'Sander', type: 16 },
{ value: 'Sebastian', type: 16 },
{ value: 'Sigurd', type: 16 },
{ value: 'Simen', type: 16 },
{ value: 'Sindre', type: 16 },
{ value: 'Stian', type: 16 },
{ value: 'Svein', type: 16 },
{ value: 'Svend', type: 16 },
{ value: 'Sverre', type: 16 },
{ value: 'Thomas', type: 16 },
{ value: 'Thor', type: 16 },
{ value: 'Tobias', type: 16 },
{ value: 'Tomas', type: 16 },
{ value: 'Tor', type: 16 },
{ value: 'Vegar', type: 16 },
{ value: 'Vegard', type: 16 },
{ value: 'femaleFirst', type: 8 },
{ value: 'Abigael', type: 16 },
{ value: 'Adelis', type: 16 },
{ value: 'Agot', type: 16 },
{ value: 'Alberte', type: 16 },
{ value: 'Alfhild', type: 16 },
{ value: 'Ane', type: 16 },
{ value: 'Annbjorg', type: 16 },
{ value: 'Annborg', type: 16 },
{ value: 'Arnbjorg', type: 16 },
{ value: 'Asdis', type: 16 },
{ value: 'Aslaug', type: 16 },
{ value: 'Benedikte', type: 16 },
{ value: 'Bergit', type: 16 },
{ value: 'Bergliot', type: 16 },
{ value: 'Berit', type: 16 },
{ value: 'Brigit', type: 16 },
{ value: 'Canutte', type: 16 },
{ value: 'Cathrine', type: 16 },
{ value: 'Dagrun', type: 16 },
{ value: 'Fredrika', type: 16 },
{ value: 'Gerdy', type: 16 },
{ value: 'Grete', type: 16 },
{ value: 'Grethe', type: 16 },
{ value: 'Gry', type: 16 },
{ value: 'Gudlaug', type: 16 },
{ value: 'Gunnhild', type: 16 },
{ value: 'Gunnvor', type: 16 },
{ value: 'Halldora', type: 16 },
{ value: 'Hege', type: 16 },
{ value: 'Heidrun', type: 16 },
{ value: 'Hjordis', type: 16 },
{ value: 'Idunn', type: 16 },
{ value: 'Ingebjorg', type: 16 },
{ value: 'Ingfrid', type: 16 },
{ value: 'Inghild', type: 16 },
{ value: 'Ingvild', type: 16 },
{ value: 'Janne', type: 16 },
{ value: 'Johanne', type: 16 },
{ value: 'Jorunn', type: 16 },
{ value: 'Kanutte', type: 16 },
{ value: 'Kari', type: 16 },
{ value: 'Karita', type: 16 },
{ value: 'Karoline', type: 16 },
{ value: 'Kirsten', type: 16 },
{ value: 'Kjellfrid', type: 16 },
{ value: 'Kjersti', type: 16 },
{ value: 'Kjerstin', type: 16 },
{ value: 'Kristi', type: 16 },
{ value: 'Kristine', type: 16 },
{ value: 'Lise', type: 16 },
{ value: 'Lovise', type: 16 },
{ value: 'Magnhild', type: 16 },
{ value: 'Margarete', type: 16 },
{ value: 'Margarethe', type: 16 },
{ value: 'Margrethe', type: 16 },
{ value: 'Marit', type: 16 },
{ value: 'Rebekka', type: 16 },
{ value: 'Silje', type: 16 },
{ value: 'Sofia', type: 16 },
{ value: 'Solaug', type: 16 },
{ value: 'Thorbjorg', type: 16 },
{ value: 'Torbjorg', type: 16 },
{ value: 'Torhilda', type: 16 },
{ value: 'Torid', type: 16 },
{ value: 'Toril', type: 16 },
{ value: 'Urd', type: 16 },
{ value: 'Valdis', type: 16 },
{ value: 'Vendela', type: 16 },
{ value: 'Vibeke', type: 16 },
{ value: 'Viva', type: 16 },
{ value: 'Waldis', type: 16 },
{ value: 'Yngvild', type: 16 },
{ value: 'maleLast', type: 8 },
{ value: 'Aamodt', type: 16 },
{ value: 'Aas', type: 16 },
{ value: 'Aasen', type: 16 },
{ value: 'Aasgaard', type: 16 },
{ value: 'Abel', type: 16 },
{ value: 'Abrahamsen', type: 16 },
{ value: 'Alsgaard', type: 16 },
{ value: 'Alving', type: 16 },
{ value: 'Amundsen', type: 16 },
{ value: 'Amundson', type: 16 },
{ value: 'Andersen', type: 16 },
{ value: 'Andreassen', type: 16 },
{ value: 'Andresen', type: 16 },
{ value: 'Andsnes', type: 16 },
{ value: 'Antonisen', type: 16 },
{ value: 'Antonsen', type: 16 },
{ value: 'Arnesen', type: 16 },
{ value: 'Arup', type: 16 },
{ value: 'Asheim', type: 16 },
{ value: 'Aune', type: 16 },
{ value: 'Bakke', type: 16 },
{ value: 'Bakken', type: 16 },
{ value: 'Balle', type: 16 },
{ value: 'Baltzersen', type: 16 },
{ value: 'Berg', type: 16 },
{ value: 'Berge', type: 16 },
{ value: 'Berntsen', type: 16 },
{ value: 'Birkeland', type: 16 },
{ value: 'Birknes', type: 16 },
{ value: 'Bjoenkaer', type: 16 },
{ value: 'Bjoerndalen', type: 16 },
{ value: 'Bjone', type: 16 },
{ value: 'Bjordal', type: 16 },
{ value: 'Bjorlo', type: 16 },
{ value: 'Bjornebye', type: 16 },
{ value: 'Bjornson', type: 16 },
{ value: 'Bjornstad', type: 16 },
{ value: 'Blix', type: 16 },
{ value: 'Bo', type: 16 },
{ value: 'Bocklin', type: 16 },
{ value: 'Boe', type: 16 },
{ value: 'Borkman', type: 16 },
{ value: 'Brack', type: 16 },
{ value: 'Brandes', type: 16 },
{ value: 'Brat', type: 16 },
{ value: 'Brataas', type: 16 },
{ value: 'Bredesen', type: 16 },
{ value: 'Brekke', type: 16 },
{ value: 'Brenden', type: 16 },
{ value: 'Brogger', type: 16 },
{ value: 'Brovik', type: 16 },
{ value: 'Buraas', type: 16 },
{ value: 'Burass', type: 16 },
{ value: 'Christensen', type: 16 },
{ value: 'Christiansen', type: 16 },
{ value: 'Daehle', type: 16 },
{ value: 'Daehlie', type: 16 },
{ value: 'Dahl', type: 16 },
{ value: 'Dahn', type: 16 },
{ value: 'Dahue', type: 16 },
{ value: 'Danielsen', type: 16 },
{ value: 'Dybendahl', type: 16 },
{ value: 'Edvardsen', type: 16 },
{ value: 'Eftevang', type: 16 },
{ value: 'Eggen', type: 16 },
{ value: 'Eide', type: 16 },
{ value: 'Eliassen', type: 16 },
{ value: 'Elieson', type: 16 },
{ value: 'Ellingsen', type: 16 },
{ value: 'Elvsted', type: 16 },
{ value: 'Engen', type: 16 },
{ value: 'Enger', type: 16 },
{ value: 'Englund', type: 16 },
{ value: 'Engstrand', type: 16 },
{ value: 'Eriksen', type: 16 },
{ value: 'Ertzgard', type: 16 },
{ value: 'Evensen', type: 16 },
{ value: 'Fagerberg', type: 16 },
{ value: 'Fagernes', type: 16 },
{ value: 'Falck', type: 16 },
{ value: 'Fjaerestad', type: 16 },
{ value: 'Fjortoft', type: 16 },
{ value: 'Flemmen', type: 16 },
{ value: 'Flo', type: 16 },
{ value: 'Folkow', type: 16 },
{ value: 'Fosli', type: 16 },
{ value: 'Franck', type: 16 },
{ value: 'Fredriksen', type: 16 },
{ value: 'Fretheim', type: 16 },
{ value: 'Fuglesang', type: 16 },
{ value: 'Fuglestad', type: 16 },
{ value: 'Furuseth', type: 16 },
{ value: 'Gabler', type: 16 },
{ value: 'Gabrielsen', type: 16 },
{ value: 'Garborg', type: 16 },
{ value: 'Gimle', type: 16 },
{ value: 'Gjeldnes', type: 16 },
{ value: 'Gjelland', type: 16 },
{ value: 'Gjessing', type: 16 },
{ value: 'Grieg', type: 16 },
{ value: 'Grimseth', type: 16 },
{ value: 'Grimsmo', type: 16 },
{ value: 'Gritdal', type: 16 },
{ value: 'Grodas', type: 16 },
{ value: 'Groenvold', type: 16 },
{ value: 'Gronelv', type: 16 },
{ value: 'Guidon', type: 16 },
{ value: 'Gulbrandsen', type: 16 },
{ value: 'Gundersen', type: 16 },
{ value: 'Gunderson', type: 16 },
{ value: 'Gunnestad', type: 16 },
{ value: 'Gylfason', type: 16 },
{ value: 'Haakonsen', type: 16 },
{ value: 'Haarberg', type: 16 },
{ value: 'Haarland', type: 16 },
{ value: 'Haartz', type: 16 },
{ value: 'Hagen', type: 16 },
{ value: 'Halskar', type: 16 },
{ value: 'Halvorsen', type: 16 },
{ value: 'Hammer', type: 16 },
{ value: 'Hanevold', type: 16 },
{ value: 'Hanke', type: 16 },
{ value: 'Hansen', type: 16 },
{ value: 'Hanssen', type: 16 },
{ value: 'Hanstveit', type: 16 },
{ value: 'Hartmark', type: 16 },
{ value: 'Hasso', type: 16 },
{ value: 'Hasund', type: 16 },
{ value: 'Haug', type: 16 },
{ value: 'Hauge', type: 16 },
{ value: 'Haugen', type: 16 },
{ value: 'Haugland', type: 16 },
{ value: 'Haugsrud', type: 16 },
{ value: 'Heiberg', type: 16 },
{ value: 'Helgeland', type: 16 },
{ value: 'Helgerod', type: 16 },
{ value: 'Helland', type: 16 },
{ value: 'Helmer', type: 16 },
{ value: 'Henriksen', type: 16 },
{ value: 'Herdal', type: 16 },
{ value: 'Heyerdahl', type: 16 },
{ value: 'Hoan', type: 16 },
{ value: 'Hoeg', type: 16 },
{ value: 'Hoen', type: 16 },
{ value: 'Holm', type: 16 },
{ value: 'Holmann', type: 16 },
{ value: 'Holth', type: 16 },
{ value: 'Hopen', type: 16 },
{ value: 'Horn', type: 16 },
{ value: 'Hultgreen', type: 16 },
{ value: 'Hustveit', type: 16 },
{ value: 'Ibsen', type: 16 },
{ value: 'Ingebriktsson', type: 16 },
{ value: 'Ingstad', type: 16 },
{ value: 'Isaksen', type: 16 },
{ value: 'Iversen', type: 16 },
{ value: 'Jacobsen', type: 16 },
{ value: 'Jagge', type: 16 },
{ value: 'Jakobsen', type: 16 },
{ value: 'Jasperson', type: 16 },
{ value: 'Jelesens', type: 16 },
{ value: 'Jensen', type: 16 },
{ value: 'Jenssen', type: 16 },
{ value: 'Jevne', type: 16 },
{ value: 'Johannessen', type: 16 },
{ value: 'Johansen', type: 16 },
{ value: 'Johnsen', type: 16 },
{ value: 'Jorgensen', type: 16 },
{ value: 'Juell', type: 16 },
{ value: 'Kaland', type: 16 },
{ value: 'Karlan', type: 16 },
{ value: 'Karlsen', type: 16 },
{ value: 'Kase', type: 16 },
{ value: 'Kildal', type: 16 },
{ value: 'Kippe', type: 16 },
{ value: 'Kjeldaas', type: 16 },
{ value: 'Kjelstrup', type: 16 },
{ value: 'Kjorestad', type: 16 },
{ value: 'Kjorsvik', type: 16 },
{ value: 'Klovstod', type: 16 },
{ value: 'Knudsen', type: 16 },
{ value: 'Knutsen', type: 16 },
{ value: 'Koht', type: 16 },
{ value: 'Koss', type: 16 },
{ value: 'Krafft', type: 16 },
{ value: 'Kristensen', type: 16 },
{ value: 'Kristiansen', type: 16 },
{ value: 'Kristoffersen', type: 16 },
{ value: 'Krogstad', type: 16 },
{ value: 'Kultin', type: 16 },
{ value: 'Kvarme', type: 16 },
{ value: 'Landa', type: 16 },
{ value: 'Langslet', type: 16 },
{ value: 'Lanser', type: 16 },
{ value: 'Larsen', type: 16 },
{ value: 'Leirfall', type: 16 },
{ value: 'Leonhardsen', type: 16 },
{ value: 'Lid', type: 16 },
{ value: 'Lie', type: 16 },
{ value: 'Lien', type: 16 },
{ value: 'Lier', type: 16 },
{ value: 'Lind', type: 16 },
{ value: 'Lindahl', type: 16 },
{ value: 'Linde', type: 16 },
{ value: 'Listow', type: 16 },
{ value: 'Ljoekelsoey', type: 16 },
{ value: 'Loevaas', type: 16 },
{ value: 'Lorch', type: 16 },
{ value: 'Lous', type: 16 },
{ value: 'Lovborg', type: 16 },
{ value: 'Ludwigsen', type: 16 },
{ value: 'Lund', type: 16 },
{ value: 'Lunde', type: 16 },
{ value: 'Lyen', type: 16 },
{ value: 'Malmros', type: 16 },
{ value: 'Malmstrom', type: 16 },
{ value: 'Manders', type: 16 },
{ value: 'Marken', type: 16 },
{ value: 'Martinsen', type: 16 },
{ value: 'Mathiesen', type: 16 },
{ value: 'Mathisen', type: 16 },
{ value: 'Meling', type: 16 },
{ value: 'Meyer', type: 16 },
{ value: 'Midttun', type: 16 },
{ value: 'Mikkelsen', type: 16 },
{ value: 'Mikkelsplass', type: 16 },
{ value: 'Mo', type: 16 },
{ value: 'Moen', type: 16 },
{ value: 'Mork', type: 16 },
{ value: 'Mostue', type: 16 },
{ value: 'Munch', type: 16 },
{ value: 'Myhre', type: 16 },
{ value: 'Mykland', type: 16 },
{ value: 'Myklebust', type: 16 },
{ value: 'Myrland', type: 16 },
{ value: 'Naess', type: 16 },
{ value: 'Nanstveit', type: 16 },
{ value: 'Naustvik', type: 16 },
{ value: 'Neilsen', type: 16 },
{ value: 'Nerhus', type: 16 },
{ value: 'Nielsen', type: 16 },
{ value: 'Nilsen', type: 16 },
{ value: 'Njerve', type: 16 },
{ value: 'Njos', type: 16 },
{ value: 'Noberg', type: 16 },
{ value: 'Nore', type: 16 },
{ value: 'Nyberg', type: 16 },
{ value: 'Nygard', type: 16 },
{ value: 'Odegard', type: 16 },
{ value: 'Oedegaard', type: 16 },
{ value: 'Oesten', type: 16 },
{ value: 'Olsen', type: 16 },
{ value: 'Omholt', type: 16 },
{ value: 'Orden', type: 16 },
{ value: 'Orthe', type: 16 },
{ value: 'Ostenstad', type: 16 },
{ value: 'Ottesen', type: 16 },
{ value: 'Paldan', type: 16 },
{ value: 'Paulsen', type: 16 },
{ value: 'Pedersen', type: 16 },
{ value: 'Pederssen', type: 16 },
{ value: 'Pettersen', type: 16 },
{ value: 'Poulsen', type: 16 },
{ value: 'Prydz', type: 16 },
{ value: 'Ramsfeld', type: 16 },
{ value: 'Ramsfjell', type: 16 },
{ value: 'Rank', type: 16 },
{ value: 'Ranning', type: 16 },
{ value: 'Rasmussen', type: 16 },
{ value: 'Ratkje', type: 16 },
{ value: 'Rekdal', type: 16 },
{ value: 'Resi', type: 16 },
{ value: 'Retter', type: 16 },
{ value: 'Ribur', type: 16 },
{ value: 'Riseth', type: 16 },
{ value: 'Rodahl', type: 16 },
{ value: 'Rovlund', type: 16 },
{ value: 'Ruud', type: 16 },
{ value: 'Saeterstoel', type: 16 },
{ value: 'Saether', type: 16 },
{ value: 'Salvesen', type: 16 },
{ value: 'Sandvik', type: 16 },
{ value: 'Schei', type: 16 },
{ value: 'Schjerven', type: 16 },
{ value: 'Schroder', type: 16 },
{ value: 'Schwane', type: 16 },
{ value: 'Schytte', type: 16 },
{ value: 'Selle', type: 16 },
{ value: 'Selling', type: 16 },
{ value: 'Selvik', type: 16 },
{ value: 'Sikveland', type: 16 },
{ value: 'Simonsen', type: 16 },
{ value: 'Sivertsen', type: 16 },
{ value: 'Sivertson', type: 16 },
{ value: 'Sivlee', type: 16 },
{ value: 'Sjo', type: 16 },
{ value: 'Sjovold', type: 16 },
{ value: 'Skarsgaard', type: 16 },
{ value: 'Skarsgard', type: 16 },
{ value: 'Skavlan', type: 16 },
{ value: 'Skjelbraid', type: 16 },
{ value: 'Skjolsvold', type: 16 },
{ value: 'Skovgaard', type: 16 },
{ value: 'Skreien', type: 16 },
{ value: 'Smilla', type: 16 },
{ value: 'Solbakken', type: 16 },
{ value: 'Solbakker', type: 16 },
{ value: 'Solberg', type: 16 },
{ value: 'Solheim', type: 16 },
{ value: 'Solness', type: 16 },
{ value: 'Solskaer', type: 16 },
{ value: 'Sondral', type: 16 },
{ value: 'Sorensen', type: 16 },
{ value: 'Stamso', type: 16 },
{ value: 'Steen', type: 16 },
{ value: 'Stensrud', type: 16 },
{ value: 'Stianson', type: 16 },
{ value: 'Stirner', type: 16 },
{ value: 'Storelid', type: 16 },
{ value: 'Stram', type: 16 },
{ value: 'Strand', type: 16 },
{ value: 'Strandli', type: 16 },
{ value: 'Svasand', type: 16 },
{ value: 'Svendson', type: 16 },
{ value: 'Svenoy', type: 16 },
{ value: 'Syversen', type: 16 },
{ value: 'Tangen', type: 16 },
{ value: 'Tangvik', type: 16 },
{ value: 'Tesman', type: 16 },
{ value: 'Thomassen', type: 16 },
{ value: 'Thonstad', type: 16 },
{ value: 'Thoresen', type: 16 },
{ value: 'Thorsen', type: 16 },
{ value: 'Thue', type: 16 },
{ value: 'Thulesius', type: 16 },
{ value: 'Thune', type: 16 },
{ value: 'Thymann', type: 16 },
{ value: 'Tobiassen', type: 16 },
{ value: 'Tonder', type: 16 },
{ value: 'Tonsberg', type: 16 },
{ value: 'Torgereen', type: 16 },
{ value: 'Torp', type: 16 },
{ value: 'Traa', type: 16 },
{ value: 'Tunold', type: 16 },
{ value: 'Tveit', type: 16 },
{ value: 'Ulstein', type: 16 },
{ value: 'Ulving', type: 16 },
{ value: 'Utskjoer', type: 16 },
{ value: 'Veitberg', type: 16 },
{ value: 'Vigeland', type: 16 },
{ value: 'Vik', type: 16 },
{ value: 'Vind', type: 16 },
{ value: 'Waldum', type: 16 },
{ value: 'Wangel', type: 16 },
{ value: 'Wangen', type: 16 },
{ value: 'Wassmo', type: 16 },
{ value: 'Wikborg', type: 16 },
{ value: 'Wullum', type: 16 },
{ value: 'Yons', type: 16 },
{ value: 'Ytterhus', type: 16 },
{ value: 'Zakariassen', type: 16 }
]
process.env.NODE_ENV = 'production'
import S from 'sanctuary'
import tokens from './swedish-tokens.js'
const timeStart = tag => x => (console.time (tag), x)
const timeEnd = tag => x => (console.timeEnd (tag), x)
const TOKEN = Object.freeze ({
PARENT: 8,
CHILD: 16,
})
// Token = { value: Any, type: Number }
// parse :: Pair Ast (Array a) -> Token -> Pair Ast (Array a)
const parse = pair => token => {
let ast = S.fst (pair), parent = S.snd (pair)
switch (token.type) {
case TOKEN.PARENT:
parent = ast[token.value] = []
break
case TOKEN.CHILD:
parent.push (token.value)
break
default:
// skip token
}
return S.Pair (ast) (parent)
}
// parser :: Array Token -> Ast
const parser = S.pipe ([
timeStart ('parse'),
S.reduce (parse) (S.Pair ({}) ([])),
timeEnd ('parse'),
S.fst,
])
// *****************************************************************************
// fst :: Array a -> a | undefined
const fst = a => a[0]
// parse_ :: Array2 Ast (Array a) -> Token -> Array2 Ast (Array a)
const parse_ = pair => token => {
let ast = fst (pair), parent = pair[1]
switch (token.type) {
case TOKEN.PARENT:
parent = ast[token.value] = []
break
case TOKEN.CHILD:
parent.push (token.value)
break
default:
// skip token
}
return [ast, parent]
}
// parser_ :: Array Token -> Ast
const parser_ = S.pipe ([
timeStart ('parse_'),
S.reduce (parse_) ([{},[]]),
timeEnd ('parse_'),
fst,
])
parser_ (tokens)
parser (tokens) // ~80% slower than parser_
export default [
{ value: 'lookWeight', type: 8 },
{ value: 60, type: 16 },
{ value: 40, type: 16 },
{ value: 0, type: 16 },
{ value: 0, type: 16 },
{ value: 'maleFirst', type: 8 },
{ value: 'Johan', type: 16 },
{ value: 'Fredrik', type: 16 },
{ value: 'Sten', type: 16 },
{ value: 'Olof', type: 16 },
{ value: 'Anders', type: 16 },
{ value: 'Sven', type: 16 },
{ value: 'Mattias', type: 16 },
{ value: 'Jesper', type: 16 },
{ value: 'David', type: 16 },
{ value: 'Henrik', type: 16 },
{ value: 'Lars', type: 16 },
{ value: 'Mikael', type: 16 },
{ value: 'Andreas', type: 16 },
{ value: 'Robin', type: 16 },
{ value: 'Christian', type: 16 },
{ value: 'Joakim', type: 16 },
{ value: 'John', type: 16 },
{ value: 'Linus', type: 16 },
{ value: 'Mats', type: 16 },
{ value: 'Tommy', type: 16 },
{ value: 'Per', type: 16 },
{ value: 'Sebastian', type: 16 },
{ value: 'Edvin', type: 16 },
{ value: 'Bo', type: 16 },
{ value: 'Leif', type: 16 },
{ value: 'Jens', type: 16 },
{ value: 'Jonas', type: 16 },
{ value: 'Peter', type: 16 },
{ value: 'Thomas', type: 16 },
{ value: 'Erik', type: 16 },
{ value: 'femaleFirst', type: 8 },
{ value: 'Christine', type: 16 },
{ value: 'Annika', type: 16 },
{ value: 'Isabel', type: 16 },
{ value: 'Anna', type: 16 },
{ value: 'Lena', type: 16 },
{ value: 'Mia', type: 16 },
{ value: 'Pia', type: 16 },
{ value: 'Petra', type: 16 },
{ value: 'Madeleine', type: 16 },
{ value: 'Johanna', type: 16 },
{ value: 'Gunilla', type: 16 },
{ value: 'Eva', type: 16 },
{ value: 'Ellinor', type: 16 },
{ value: 'Elisabet', type: 16 },
{ value: 'Amanda', type: 16 },
{ value: 'Carin', type: 16 },
{ value: 'Mikaela', type: 16 },
{ value: 'Magdalena', type: 16 },
{ value: 'Ellen', type: 16 },
{ value: 'Ingrid', type: 16 },
{ value: 'Inger', type: 16 },
{ value: 'Linda', type: 16 },
{ value: 'Karin', type: 16 },
{ value: 'Maria', type: 16 },
{ value: 'Sara', type: 16 },
{ value: 'Emma', type: 16 },
{ value: 'Marie', type: 16 },
{ value: 'maleLast', type: 8 },
{ value: 'Linder', type: 16 },
{ value: 'Olofsson', type: 16 },
{ value: 'Holmqvist', type: 16 },
{ value: 'Andersson', type: 16 },
{ value: 'Lindberg', type: 16 },
{ value: 'Lindqvist', type: 16 },
{ value: 'Gustafsson', type: 16 },
{ value: 'Larsson', type: 16 },
{ value: 'Lindgren', type: 16 },
{ value: 'Lind', type: 16 },
{ value: 'Eklund', type: 16 },
{ value: 'Holm', type: 16 },
{ value: 'Claesson', type: 16 },
{ value: 'Viklund', type: 16 },
{ value: 'Lund', type: 16 },
{ value: 'Falk', type: 16 },
{ value: 'Blom', type: 16 },
{ value: 'Ek', type: 16 },
{ value: 'Norberg', type: 16 },
{ value: 'Sundqvist', type: 16 },
{ value: 'Sjoborg', type: 16 },
{ value: 'Ivarsson', type: 16 },
{ value: 'Hedlund', type: 16 },
{ value: 'Holmgren', type: 16 },
{ value: 'Hedlund', type: 16 },
{ value: 'Nordin', type: 16 },
{ value: 'Berggren', type: 16 },
{ value: 'Svensson', type: 16 },
{ value: 'Lindgren', type: 16 },
{ value: 'Eklund', type: 16 },
{ value: 'Axelsson', type: 16 }
]
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment