From a8d8c3a578c24b163601374016b0c0720bf8029b Mon Sep 17 00:00:00 2001 From: Jakub Jankiewicz Date: Mon, 5 Feb 2024 16:14:49 +0100 Subject: [PATCH] add R7RS `char-ci<...>?` functions #298 --- dist/std.min.scm | 18 ++++++++----- dist/std.scm | 69 ++++++++++++++++++++++++++++++++++++++++------- dist/std.xcb | Bin 109361 -> 110122 bytes lib/R7RS.scm | 69 ++++++++++++++++++++++++++++++++++++++++------- 4 files changed, 130 insertions(+), 26 deletions(-) diff --git a/dist/std.min.scm b/dist/std.min.scm index 864d5f22a..81b762b7f 100644 --- a/dist/std.min.scm +++ b/dist/std.min.scm @@ -328,12 +328,18 @@ (define *fold-case-mapping* (JSON.parse "{\u000A\"65\": 97, \"66\": 98, \"67\": 99, \"68\": 100,\u000A\"69\": 101, \"70\": 102, \"71\": 103, \"72\": 104,\u000A\"73\": 105, \"74\": 106, \"75\": 107, \"76\": 108,\u000A\"77\": 109, \"78\": 110, \"79\": 111, \"80\": 112,\u000A\"81\": 113, \"82\": 114, \"83\": 115, \"84\": 116,\u000A\"85\": 117, \"86\": 118, \"87\": 119, \"88\": 120,\u000A\"89\": 121, \"90\": 122, \"181\": 956, \"192\": 224,\u000A\"193\": 225, \"194\": 226, \"195\": 227, \"196\": 228,\u000A\"197\": 229, \"198\": 230, \"199\": 231, \"200\": 232,\u000A\"201\": 233, \"202\": 234, \"203\": 235, \"204\": 236,\u000A\"205\": 237, \"206\": 238, \"207\": 239, \"208\": 240,\u000A\"209\": 241, \"210\": 242, \"211\": 243, \"212\": 244,\u000A\"213\": 245, \"214\": 246, \"216\": 248, \"217\": 249,\u000A\"218\": 250, \"219\": 251, \"220\": 252, \"221\": 253,\u000A\"222\": 254, \"256\": 257, \"258\": 259, \"260\": 261,\u000A\"262\": 263, \"264\": 265, \"266\": 267, \"268\": 269,\u000A\"270\": 271, \"272\": 273, \"274\": 275, \"276\": 277,\u000A\"278\": 279, \"280\": 281, \"282\": 283, \"284\": 285,\u000A\"286\": 287, \"288\": 289, \"290\": 291, \"292\": 293,\u000A\"294\": 295, \"296\": 297, \"298\": 299, \"300\": 301,\u000A\"302\": 303, \"306\": 307, \"308\": 309, \"310\": 311,\u000A\"313\": 314, \"315\": 316, \"317\": 318, \"319\": 320,\u000A\"321\": 322, \"323\": 324, \"325\": 326, \"327\": 328,\u000A\"330\": 331, \"332\": 333, \"334\": 335, \"336\": 337,\u000A\"338\": 339, \"340\": 341, \"342\": 343, \"344\": 345,\u000A\"346\": 347, \"348\": 349, \"350\": 351, \"352\": 353,\u000A\"354\": 355, \"356\": 357, \"358\": 359, \"360\": 361,\u000A\"362\": 363, \"364\": 365, \"366\": 367, \"368\": 369,\u000A\"370\": 371, \"372\": 373, \"374\": 375, \"376\": 255,\u000A\"377\": 378, \"379\": 380, \"381\": 382, \"115\": 383,\u000A\"385\": 595, \"386\": 387, \"388\": 389, \"390\": 596,\u000A\"391\": 392, \"393\": 598, \"394\": 599, \"395\": 396,\u000A\"398\": 477, \"399\": 601, \"400\": 603, \"401\": 402,\u000A\"403\": 608, \"404\": 611, \"406\": 617, \"407\": 616,\u000A\"408\": 409, \"412\": 623, \"413\": 626, \"415\": 629,\u000A\"416\": 417, \"418\": 419, \"420\": 421, \"422\": 640,\u000A\"423\": 424, \"425\": 643, \"428\": 429, \"430\": 648,\u000A\"431\": 432, \"433\": 650, \"434\": 651, \"435\": 436,\u000A\"437\": 438, \"439\": 658, \"440\": 441, \"444\": 445,\u000A\"452\": 454, \"454\": 453, \"455\": 457, \"457\": 456,\u000A\"458\": 460, \"460\": 459, \"461\": 462, \"463\": 464,\u000A\"465\": 466, \"467\": 468, \"469\": 470, \"471\": 472,\u000A\"473\": 474, \"475\": 476, \"478\": 479, \"480\": 481,\u000A\"482\": 483, \"484\": 485, \"486\": 487, \"488\": 489,\u000A\"490\": 491, \"492\": 493, \"494\": 495, \"497\": 499,\u000A\"499\": 498, \"500\": 501, \"502\": 405, \"503\": 447,\u000A\"504\": 505, \"506\": 507, \"508\": 509, \"510\": 511,\u000A\"512\": 513, \"514\": 515, \"516\": 517, \"518\": 519,\u000A\"520\": 521, \"522\": 523, \"524\": 525, \"526\": 527,\u000A\"528\": 529, \"530\": 531, \"532\": 533, \"534\": 535,\u000A\"536\": 537, \"538\": 539, \"540\": 541, \"542\": 543,\u000A\"544\": 414, \"546\": 547, \"548\": 549, \"550\": 551,\u000A\"552\": 553, \"554\": 555, \"556\": 557, \"558\": 559,\u000A\"560\": 561, \"562\": 563, \"570\": 11365, \"571\": 572,\u000A\"573\": 410, \"574\": 11366, \"577\": 578, \"579\": 384,\u000A\"580\": 649, \"581\": 652, \"582\": 583, \"584\": 585,\u000A\"587\": 586, \"588\": 589, \"590\": 591, \"837\": 953,\u000A\"880\": 881, \"882\": 883, \"886\": 887, \"895\": 1011,\u000A\"902\": 940, \"904\": 941, \"905\": 942, \"906\": 943,\u000A\"908\": 972, \"910\": 973, \"911\": 974, \"913\": 945,\u000A\"914\": 946, \"915\": 947, \"916\": 948, \"917\": 949,\u000A\"918\": 950, \"919\": 951, \"920\": 952, \"921\": 953,\u000A\"922\": 954, \"923\": 955, \"924\": 956, \"925\": 957,\u000A\"926\": 958, \"927\": 959, \"928\": 960, \"929\": 961,\u000A\"931\": 963, \"932\": 964, \"933\": 965, \"934\": 966,\u000A\"935\": 967, \"936\": 968, \"937\": 969, \"938\": 970,\u000A\"939\": 971, \"963\": 962, \"975\": 983, \"976\": 946,\u000A\"977\": 952, \"981\": 966, \"982\": 960, \"984\": 985,\u000A\"986\": 987, \"988\": 989, \"990\": 991, \"992\": 993,\u000A\"994\": 995, \"996\": 997, \"998\": 999, \"1000\": 1001,\u000A\"1002\": 1003, \"1004\": 1005, \"1006\": 1007, \"1008\": 954,\u000A\"1009\": 961, \"1012\": 952, \"1013\": 949, \"1015\": 1016,\u000A\"1017\": 1010, \"1018\": 1019, \"1021\": 891, \"1022\": 892,\u000A\"1023\": 893, \"1024\": 1104, \"1025\": 1105, \"1026\": 1106,\u000A\"1027\": 1107, \"1028\": 1108, \"1029\": 1109, \"1030\": 1110,\u000A\"1031\": 1111, \"1032\": 1112, \"1033\": 1113, \"1034\": 1114,\u000A\"1035\": 1115, \"1036\": 1116, \"1037\": 1117, \"1038\": 1118,\u000A\"1039\": 1119, \"1040\": 1072, \"1041\": 1073, \"1042\": 1074,\u000A\"1043\": 1075, \"1044\": 1076, \"1045\": 1077, \"1046\": 1078,\u000A\"1047\": 1079, \"1048\": 1080, \"1049\": 1081, \"1050\": 1082,\u000A\"1051\": 1083, \"1052\": 1084, \"1053\": 1085, \"1054\": 1086,\u000A\"1055\": 1087, \"1056\": 1088, \"1057\": 1089, \"1058\": 1090,\u000A\"1059\": 1091, \"1060\": 1092, \"1061\": 1093, \"1062\": 1094,\u000A\"1063\": 1095, \"1064\": 1096, \"1065\": 1097, \"1066\": 1098,\u000A\"1067\": 1099, \"1068\": 1100, \"1069\": 1101, \"1070\": 1102,\u000A\"1071\": 1103, \"1120\": 1121, \"1122\": 1123, \"1124\": 1125,\u000A\"1126\": 1127, \"1128\": 1129, \"1130\": 1131, \"1132\": 1133,\u000A\"1134\": 1135, \"1136\": 1137, \"1138\": 1139, \"1140\": 1141,\u000A\"1142\": 1143, \"1144\": 1145, \"1146\": 1147, \"1148\": 1149,\u000A\"1150\": 1151, \"1152\": 1153, \"1162\": 1163, \"1164\": 1165,\u000A\"1166\": 1167, \"1168\": 1169, \"1170\": 1171, \"1172\": 1173,\u000A\"1174\": 1175, \"1176\": 1177, \"1178\": 1179, \"1180\": 1181,\u000A\"1182\": 1183, \"1184\": 1185, \"1186\": 1187, \"1188\": 1189,\u000A\"1190\": 1191, \"1192\": 1193, \"1194\": 1195, \"1196\": 1197,\u000A\"1198\": 1199, \"1200\": 1201, \"1202\": 1203, \"1204\": 1205,\u000A\"1206\": 1207, \"1208\": 1209, \"1210\": 1211, \"1212\": 1213,\u000A\"1214\": 1215, \"1216\": 1231, \"1217\": 1218, \"1219\": 1220,\u000A\"1221\": 1222, \"1223\": 1224, \"1225\": 1226, \"1227\": 1228,\u000A\"1229\": 1230, \"1232\": 1233, \"1234\": 1235, \"1236\": 1237,\u000A\"1238\": 1239, \"1240\": 1241, \"1242\": 1243, \"1244\": 1245,\u000A\"1246\": 1247, \"1248\": 1249, \"1250\": 1251, \"1252\": 1253,\u000A\"1254\": 1255, \"1256\": 1257, \"1258\": 1259, \"1260\": 1261,\u000A\"1262\": 1263, \"1264\": 1265, \"1266\": 1267, \"1268\": 1269,\u000A\"1270\": 1271, \"1272\": 1273, \"1274\": 1275, \"1276\": 1277,\u000A\"1278\": 1279, \"1280\": 1281, \"1282\": 1283, \"1284\": 1285,\u000A\"1286\": 1287, \"1288\": 1289, \"1290\": 1291, \"1292\": 1293,\u000A\"1294\": 1295, \"1296\": 1297, \"1298\": 1299, \"1300\": 1301,\u000A\"1302\": 1303, \"1304\": 1305, \"1306\": 1307, \"1308\": 1309,\u000A\"1310\": 1311, \"1312\": 1313, \"1314\": 1315, \"1316\": 1317,\u000A\"1318\": 1319, \"1320\": 1321, \"1322\": 1323, \"1324\": 1325,\u000A\"1326\": 1327, \"1329\": 1377, \"1330\": 1378, \"1331\": 1379,\u000A\"1332\": 1380, \"1333\": 1381, \"1334\": 1382, \"1335\": 1383,\u000A\"1336\": 1384, \"1337\": 1385, \"1338\": 1386, \"1339\": 1387,\u000A\"1340\": 1388, \"1341\": 1389, \"1342\": 1390, \"1343\": 1391,\u000A\"1344\": 1392, \"1345\": 1393, \"1346\": 1394, \"1347\": 1395,\u000A\"1348\": 1396, \"1349\": 1397, \"1350\": 1398, \"1351\": 1399,\u000A\"1352\": 1400, \"1353\": 1401, \"1354\": 1402, \"1355\": 1403,\u000A\"1356\": 1404, \"1357\": 1405, \"1358\": 1406, \"1359\": 1407,\u000A\"1360\": 1408, \"1361\": 1409, \"1362\": 1410, \"1363\": 1411,\u000A\"1364\": 1412, \"1365\": 1413, \"1366\": 1414, \"4256\": 11520,\u000A\"4257\": 11521, \"4258\": 11522, \"4259\": 11523, \"4260\": 11524,\u000A\"4261\": 11525, \"4262\": 11526, \"4263\": 11527, \"4264\": 11528,\u000A\"4265\": 11529, \"4266\": 11530, \"4267\": 11531, \"4268\": 11532,\u000A\"4269\": 11533, \"4270\": 11534, \"4271\": 11535, \"4272\": 11536,\u000A\"4273\": 11537, \"4274\": 11538, \"4275\": 11539, \"4276\": 11540,\u000A\"4277\": 11541, \"4278\": 11542, \"4279\": 11543, \"4280\": 11544,\u000A\"4281\": 11545, \"4282\": 11546, \"4283\": 11547, \"4284\": 11548,\u000A\"4285\": 11549, \"4286\": 11550, \"4287\": 11551, \"4288\": 11552,\u000A\"4289\": 11553, \"4290\": 11554, \"4291\": 11555, \"4292\": 11556,\u000A\"4293\": 11557, \"4295\": 11559, \"4301\": 11565, \"5104\": 5112,\u000A\"5105\": 5113, \"5106\": 5114, \"5107\": 5115, \"5108\": 5116,\u000A\"5109\": 5117, \"1074\": 7296, \"1076\": 7297, \"1086\": 7298,\u000A\"1089\": 7299, \"1090\": 7300, \"1090\": 7301, \"1098\": 7302,\u000A\"1123\": 7303, \"42571\": 7304, \"7312\": 4304, \"7313\": 4305,\u000A\"7314\": 4306, \"7315\": 4307, \"7316\": 4308, \"7317\": 4309,\u000A\"7318\": 4310, \"7319\": 4311, \"7320\": 4312, \"7321\": 4313,\u000A\"7322\": 4314, \"7323\": 4315, \"7324\": 4316, \"7325\": 4317,\u000A\"7326\": 4318, \"7327\": 4319, \"7328\": 4320, \"7329\": 4321,\u000A\"7330\": 4322, \"7331\": 4323, \"7332\": 4324, \"7333\": 4325,\u000A\"7334\": 4326, \"7335\": 4327, \"7336\": 4328, \"7337\": 4329,\u000A\"7338\": 4330, \"7339\": 4331, \"7340\": 4332, \"7341\": 4333,\u000A\"7342\": 4334, \"7343\": 4335, \"7344\": 4336, \"7345\": 4337,\u000A\"7346\": 4338, \"7347\": 4339, \"7348\": 4340, \"7349\": 4341,\u000A\"7350\": 4342, \"7351\": 4343, \"7352\": 4344, \"7353\": 4345,\u000A\"7354\": 4346, \"7357\": 4349, \"7358\": 4350, \"7359\": 4351,\u000A\"7680\": 7681, \"7682\": 7683, \"7684\": 7685, \"7686\": 7687,\u000A\"7688\": 7689, \"7690\": 7691, \"7692\": 7693, \"7694\": 7695,\u000A\"7696\": 7697, \"7698\": 7699, \"7700\": 7701, \"7702\": 7703,\u000A\"7704\": 7705, \"7706\": 7707, \"7708\": 7709, \"7710\": 7711,\u000A\"7712\": 7713, \"7714\": 7715, \"7716\": 7717, \"7718\": 7719,\u000A\"7720\": 7721, \"7722\": 7723, \"7724\": 7725, \"7726\": 7727,\u000A\"7728\": 7729, \"7730\": 7731, \"7732\": 7733, \"7734\": 7735,\u000A\"7736\": 7737, \"7738\": 7739, \"7740\": 7741, \"7742\": 7743,\u000A\"7744\": 7745, \"7746\": 7747, \"7748\": 7749, \"7750\": 7751,\u000A\"7752\": 7753, \"7754\": 7755, \"7756\": 7757, \"7758\": 7759,\u000A\"7760\": 7761, \"7762\": 7763, \"7764\": 7765, \"7766\": 7767,\u000A\"7768\": 7769, \"7770\": 7771, \"7772\": 7773, \"7774\": 7775,\u000A\"7776\": 7777, \"7778\": 7779, \"7780\": 7781, \"7782\": 7783,\u000A\"7784\": 7785, \"7786\": 7787, \"7788\": 7789, \"7790\": 7791,\u000A\"7792\": 7793, \"7794\": 7795, \"7796\": 7797, \"7798\": 7799,\u000A\"7800\": 7801, \"7802\": 7803, \"7804\": 7805, \"7806\": 7807,\u000A\"7808\": 7809, \"7810\": 7811, \"7812\": 7813, \"7814\": 7815,\u000A\"7816\": 7817, \"7818\": 7819, \"7820\": 7821, \"7822\": 7823,\u000A\"7824\": 7825, \"7826\": 7827, \"7828\": 7829, \"7777\": 7835,\u000A\"7840\": 7841, \"7842\": 7843, \"7844\": 7845, \"7846\": 7847,\u000A\"7848\": 7849, \"7850\": 7851, \"7852\": 7853, \"7854\": 7855,\u000A\"7856\": 7857, \"7858\": 7859, \"7860\": 7861, \"7862\": 7863,\u000A\"7864\": 7865, \"7866\": 7867, \"7868\": 7869, \"7870\": 7871,\u000A\"7872\": 7873, \"7874\": 7875, \"7876\": 7877, \"7878\": 7879,\u000A\"7880\": 7881, \"7882\": 7883, \"7884\": 7885, \"7886\": 7887,\u000A\"7888\": 7889, \"7890\": 7891, \"7892\": 7893, \"7894\": 7895,\u000A\"7896\": 7897, \"7898\": 7899, \"7900\": 7901, \"7902\": 7903,\u000A\"7904\": 7905, \"7906\": 7907, \"7908\": 7909, \"7910\": 7911,\u000A\"7912\": 7913, \"7914\": 7915, \"7916\": 7917, \"7918\": 7919,\u000A\"7920\": 7921, \"7922\": 7923, \"7924\": 7925, \"7926\": 7927,\u000A\"7928\": 7929, \"7930\": 7931, \"7932\": 7933, \"7934\": 7935,\u000A\"7944\": 7936, \"7945\": 7937, \"7946\": 7938, \"7947\": 7939,\u000A\"7948\": 7940, \"7949\": 7941, \"7950\": 7942, \"7951\": 7943,\u000A\"7960\": 7952, \"7961\": 7953, \"7962\": 7954, \"7963\": 7955,\u000A\"7964\": 7956, \"7965\": 7957, \"7976\": 7968, \"7977\": 7969,\u000A\"7978\": 7970, \"7979\": 7971, \"7980\": 7972, \"7981\": 7973,\u000A\"7982\": 7974, \"7983\": 7975, \"7992\": 7984, \"7993\": 7985,\u000A\"7994\": 7986, \"7995\": 7987, \"7996\": 7988, \"7997\": 7989,\u000A\"7998\": 7990, \"7999\": 7991, \"8008\": 8000, \"8009\": 8001,\u000A\"8010\": 8002, \"8011\": 8003, \"8012\": 8004, \"8013\": 8005,\u000A\"8025\": 8017, \"8027\": 8019, \"8029\": 8021, \"8031\": 8023,\u000A\"8040\": 8032, \"8041\": 8033, \"8042\": 8034, \"8043\": 8035,\u000A\"8044\": 8036, \"8045\": 8037, \"8046\": 8038, \"8047\": 8039,\u000A\"8120\": 8112, \"8121\": 8113, \"8122\": 8048, \"8123\": 8049,\u000A\"8126\": 953, \"8136\": 8050, \"8137\": 8051, \"8138\": 8052,\u000A\"8139\": 8053, \"8152\": 8144, \"8153\": 8145, \"8154\": 8054,\u000A\"8155\": 8055, \"8168\": 8160, \"8169\": 8161, \"8170\": 8058,\u000A\"8171\": 8059, \"8172\": 8165, \"8184\": 8056, \"8185\": 8057,\u000A\"8186\": 8060, \"8187\": 8061, \"8486\": 969, \"8490\": 107,\u000A\"8491\": 229, \"8498\": 8526, \"8544\": 8560, \"8545\": 8561,\u000A\"8546\": 8562, \"8547\": 8563, \"8548\": 8564, \"8549\": 8565,\u000A\"8550\": 8566, \"8551\": 8567, \"8552\": 8568, \"8553\": 8569,\u000A\"8554\": 8570, \"8555\": 8571, \"8556\": 8572, \"8557\": 8573,\u000A\"8558\": 8574, \"8559\": 8575, \"8579\": 8580, \"9398\": 9424,\u000A\"9399\": 9425, \"9400\": 9426, \"9401\": 9427, \"9402\": 9428,\u000A\"9403\": 9429, \"9404\": 9430, \"9405\": 9431, \"9406\": 9432,\u000A\"9407\": 9433, \"9408\": 9434, \"9409\": 9435, \"9410\": 9436,\u000A\"9411\": 9437, \"9412\": 9438, \"9413\": 9439, \"9414\": 9440,\u000A\"9415\": 9441, \"9416\": 9442, \"9417\": 9443, \"9418\": 9444,\u000A\"9419\": 9445, \"9420\": 9446, \"9421\": 9447, \"9422\": 9448,\u000A\"9423\": 9449, \"11264\": 11312, \"11265\": 11313, \"11266\": 11314,\u000A\"11267\": 11315, \"11268\": 11316, \"11269\": 11317, \"11270\": 11318,\u000A\"11271\": 11319, \"11272\": 11320, \"11273\": 11321, \"11274\": 11322,\u000A\"11275\": 11323, \"11276\": 11324, \"11277\": 11325, \"11278\": 11326,\u000A\"11279\": 11327, \"11280\": 11328, \"11281\": 11329, \"11282\": 11330,\u000A\"11283\": 11331, \"11284\": 11332, \"11285\": 11333, \"11286\": 11334,\u000A\"11287\": 11335, \"11288\": 11336, \"11289\": 11337, \"11290\": 11338,\u000A\"11291\": 11339, \"11292\": 11340, \"11293\": 11341, \"11294\": 11342,\u000A\"11295\": 11343, \"11296\": 11344, \"11297\": 11345, \"11298\": 11346,\u000A\"11299\": 11347, \"11348\": 11300, \"11349\": 11301, \"11302\": 11350,\u000A\"11351\": 11303, \"11304\": 11352, \"11305\": 11353, \"11306\": 11354,\u000A\"11307\": 11355, \"11308\": 11356, \"11309\": 11357, \"11310\": 11358,\u000A\"11311\": 11359, \"11360\": 11361, \"11362\": 619, \"11363\": 7549,\u000A\"11364\": 637, \"11367\": 11368, \"11369\": 11370, \"11371\": 11372,\u000A\"11373\": 593, \"11374\": 625, \"11375\": 592, \"11376\": 594,\u000A\"11378\": 11379, \"11381\": 11382, \"11390\": 575, \"11391\": 576,\u000A\"11392\": 11393, \"11394\": 11395, \"11396\": 11397, \"11398\": 11399,\u000A\"11400\": 11401, \"11402\": 11403, \"11404\": 11405, \"11406\": 11407,\u000A\"11408\": 11409, \"11410\": 11411, \"11412\": 11413, \"11414\": 11415,\u000A\"11416\": 11417, \"11418\": 11419, \"11420\": 11421, \"11422\": 11423,\u000A\"11424\": 11425, \"11426\": 11427, \"11428\": 11429, \"11430\": 11431,\u000A\"11432\": 11433, \"11434\": 11435, \"11436\": 11437, \"11438\": 11439,\u000A\"11440\": 11441, \"11442\": 11443, \"11444\": 11445, \"11446\": 11447,\u000A\"11448\": 11449, \"11450\": 11451, \"11452\": 11453, \"11454\": 11455,\u000A\"11456\": 11457, \"11458\": 11459, \"11460\": 11461, \"11462\": 11463,\u000A\"11464\": 11465, \"11466\": 11467, \"11468\": 11469, \"11470\": 11471,\u000A\"11472\": 11473, \"11474\": 11475, \"11476\": 11477, \"11478\": 11479,\u000A\"11480\": 11481, \"11482\": 11483, \"11484\": 11485, \"11486\": 11487,\u000A\"11488\": 11489, \"11490\": 11491, \"11499\": 11500, \"11501\": 11502,\u000A\"11506\": 11507, \"42560\": 42561, \"42562\": 42563, \"42564\": 42565,\u000A\"42566\": 42567, \"42568\": 42569, \"42570\": 42571, \"42572\": 42573,\u000A\"42574\": 42575, \"42576\": 42577, \"42578\": 42579, \"42580\": 42581,\u000A\"42582\": 42583, \"42584\": 42585, \"42586\": 42587, \"42588\": 42589,\u000A\"42590\": 42591, \"42592\": 42593, \"42594\": 42595, \"42596\": 42597,\u000A\"42598\": 42599, \"42600\": 42601, \"42602\": 42603, \"42604\": 42605,\u000A\"42624\": 42625, \"42626\": 42627, \"42628\": 42629, \"42630\": 42631,\u000A\"42632\": 42633, \"42634\": 42635, \"42636\": 42637, \"42638\": 42639,\u000A\"42640\": 42641, \"42642\": 42643, \"42644\": 42645, \"42646\": 42647,\u000A\"42648\": 42649, \"42650\": 42651, \"42786\": 42787, \"42788\": 42789,\u000A\"42790\": 42791, \"42792\": 42793, \"42794\": 42795, \"42796\": 42797,\u000A\"42798\": 42799, \"42802\": 42803, \"42804\": 42805, \"42806\": 42807,\u000A\"42808\": 42809, \"42810\": 42811, \"42812\": 42813, \"42814\": 42815,\u000A\"42816\": 42817, \"42818\": 42819, \"42820\": 42821, \"42822\": 42823,\u000A\"42824\": 42825, \"42826\": 42827, \"42828\": 42829, \"42830\": 42831,\u000A\"42832\": 42833, \"42834\": 42835, \"42836\": 42837, \"42838\": 42839,\u000A\"42840\": 42841, \"42842\": 42843, \"42844\": 42845, \"42846\": 42847,\u000A\"42848\": 42849, \"42850\": 42851, \"42852\": 42853, \"42854\": 42855,\u000A\"42856\": 42857, \"42858\": 42859, \"42860\": 42861, \"42862\": 42863,\u000A\"42873\": 42874, \"42875\": 42876, \"42877\": 7545, \"42878\": 42879,\u000A\"42880\": 42881, \"42882\": 42883, \"42884\": 42885, \"42886\": 42887,\u000A\"42891\": 42892, \"42893\": 613, \"42896\": 42897, \"42898\": 42899,\u000A\"42902\": 42903, \"42904\": 42905, \"42906\": 42907, \"42908\": 42909,\u000A\"42910\": 42911, \"42912\": 42913, \"42914\": 42915, \"42916\": 42917,\u000A\"42918\": 42919, \"42920\": 42921, \"42922\": 614, \"42923\": 604,\u000A\"42924\": 609, \"42925\": 620, \"618\": 42926, \"42928\": 670,\u000A\"42929\": 647, \"42930\": 669, \"42931\": 43859, \"42932\": 42933,\u000A\"42934\": 42935, \"42936\": 42937, \"42938\": 42939, \"42940\": 42941,\u000A\"42942\": 42943, \"42944\": 42945, \"42946\": 42947, \"42948\": 42900,\u000A\"42949\": 642, \"42950\": 7566, \"42951\": 42952, \"42953\": 42954,\u000A\"42960\": 42961, \"42966\": 42967, \"42968\": 42969, \"42997\": 42998,\u000A\"5024\": 43888, \"5025\": 43889, \"5026\": 43890, \"5027\": 43891,\u000A\"5028\": 43892, \"5029\": 43893, \"5030\": 43894, \"5031\": 43895,\u000A\"5032\": 43896, \"5033\": 43897, \"5034\": 43898, \"5035\": 43899,\u000A\"5036\": 43900, \"5037\": 43901, \"5038\": 43902, \"5039\": 43903,\u000A\"5040\": 43904, \"5041\": 43905, \"5042\": 43906, \"5043\": 43907,\u000A\"5044\": 43908, \"5045\": 43909, \"5046\": 43910, \"5047\": 43911,\u000A\"5048\": 43912, \"5049\": 43913, \"5050\": 43914, \"5051\": 43915,\u000A\"5052\": 43916, \"5053\": 43917, \"5054\": 43918, \"5055\": 43919,\u000A\"5056\": 43920, \"5057\": 43921, \"5058\": 43922, \"5059\": 43923,\u000A\"5060\": 43924, \"5061\": 43925, \"5062\": 43926, \"5063\": 43927,\u000A\"5064\": 43928, \"5065\": 43929, \"5066\": 43930, \"5067\": 43931,\u000A\"5068\": 43932, \"5069\": 43933, \"5070\": 43934, \"5071\": 43935,\u000A\"5072\": 43936, \"5073\": 43937, \"5074\": 43938, \"5075\": 43939,\u000A\"5076\": 43940, \"5077\": 43941, \"5078\": 43942, \"5079\": 43943,\u000A\"5080\": 43944, \"5081\": 43945, \"5082\": 43946, \"5083\": 43947,\u000A\"5084\": 43948, \"5085\": 43949, \"5086\": 43950, \"5087\": 43951,\u000A\"5088\": 43952, \"5089\": 43953, \"5090\": 43954, \"5091\": 43955,\u000A\"5092\": 43956, \"5093\": 43957, \"5094\": 43958, \"5095\": 43959,\u000A\"5096\": 43960, \"5097\": 43961, \"5098\": 43962, \"5099\": 43963,\u000A\"5100\": 43964, \"5101\": 43965, \"5102\": 43966, \"5103\": 43967,\u000A\"65313\": 65345, \"65314\": 65346, \"65315\": 65347, \"65316\": 65348,\u000A\"65317\": 65349, \"65318\": 65350, \"65319\": 65351, \"65320\": 65352,\u000A\"65321\": 65353, \"65322\": 65354, \"65323\": 65355, \"65324\": 65356,\u000A\"65325\": 65357, \"65326\": 65358, \"65327\": 65359, \"65328\": 65360,\u000A\"65329\": 65361, \"65330\": 65362, \"65331\": 65363, \"65332\": 65364,\u000A\"65333\": 65365, \"65334\": 65366, \"65335\": 65367, \"65336\": 65368,\u000A\"65337\": 65369, \"65338\": 65370, \"66560\": 66600, \"66561\": 66601,\u000A\"66562\": 66602, \"66563\": 66603, \"66564\": 66604, \"66565\": 66605,\u000A\"66566\": 66606, \"66567\": 66607, \"66568\": 66608, \"66569\": 66609,\u000A\"66570\": 66610, \"66571\": 66611, \"66572\": 66612, \"66573\": 66613,\u000A\"66574\": 66614, \"66575\": 66615, \"66576\": 66616, \"66577\": 66617,\u000A\"66578\": 66618, \"66579\": 66619, \"66580\": 66620, \"66581\": 66621,\u000A\"66582\": 66622, \"66583\": 66623, \"66584\": 66624, \"66585\": 66625,\u000A\"66586\": 66626, \"66587\": 66627, \"66588\": 66628, \"66589\": 66629,\u000A\"66590\": 66630, \"66591\": 66631, \"66592\": 66632, \"66593\": 66633,\u000A\"66594\": 66634, \"66595\": 66635, \"66596\": 66636, \"66597\": 66637,\u000A\"66598\": 66638, \"66599\": 66639, \"66736\": 66776, \"66737\": 66777,\u000A\"66738\": 66778, \"66739\": 66779, \"66740\": 66780, \"66741\": 66781,\u000A\"66742\": 66782, \"66743\": 66783, \"66744\": 66784, \"66745\": 66785,\u000A\"66746\": 66786, \"66747\": 66787, \"66748\": 66788, \"66749\": 66789,\u000A\"66750\": 66790, \"66751\": 66791, \"66752\": 66792, \"66753\": 66793,\u000A\"66754\": 66794, \"66755\": 66795, \"66756\": 66796, \"66757\": 66797,\u000A\"66758\": 66798, \"66759\": 66799, \"66760\": 66800, \"66761\": 66801,\u000A\"66762\": 66802, \"66763\": 66803, \"66764\": 66804, \"66765\": 66805,\u000A\"66766\": 66806, \"66767\": 66807, \"66768\": 66808, \"66769\": 66809,\u000A\"66770\": 66810, \"66771\": 66811, \"66928\": 66967, \"66929\": 66968,\u000A\"66930\": 66969, \"66931\": 66970, \"66932\": 66971, \"66933\": 66972,\u000A\"66934\": 66973, \"66935\": 66974, \"66936\": 66975, \"66937\": 66976,\u000A\"66938\": 66977, \"66940\": 66979, \"66941\": 66980, \"66942\": 66981,\u000A\"66943\": 66982, \"66944\": 66983, \"66945\": 66984, \"66946\": 66985,\u000A\"66947\": 66986, \"66948\": 66987, \"66949\": 66988, \"66950\": 66989,\u000A\"66951\": 66990, \"66952\": 66991, \"66953\": 66992, \"66954\": 66993,\u000A\"66956\": 66995, \"66957\": 66996, \"66958\": 66997, \"66959\": 66998,\u000A\"66960\": 66999, \"66961\": 67000, \"66962\": 67001, \"66964\": 67003,\u000A\"66965\": 67004, \"68736\": 68800, \"68737\": 68801, \"68738\": 68802,\u000A\"68739\": 68803, \"68740\": 68804, \"68741\": 68805, \"68742\": 68806,\u000A\"68743\": 68807, \"68744\": 68808, \"68745\": 68809, \"68746\": 68810,\u000A\"68747\": 68811, \"68748\": 68812, \"68749\": 68813, \"68750\": 68814,\u000A\"68751\": 68815, \"68752\": 68816, \"68753\": 68817, \"68754\": 68818,\u000A\"68755\": 68819, \"68756\": 68820, \"68757\": 68821, \"68758\": 68822,\u000A\"68759\": 68823, \"68760\": 68824, \"68761\": 68825, \"68762\": 68826,\u000A\"68763\": 68827, \"68764\": 68828, \"68765\": 68829, \"68766\": 68830,\u000A\"68767\": 68831, \"68768\": 68832, \"68769\": 68833, \"68770\": 68834,\u000A\"68771\": 68835, \"68772\": 68836, \"68773\": 68837, \"68774\": 68838,\u000A\"68775\": 68839, \"68776\": 68840, \"68777\": 68841, \"68778\": 68842,\u000A\"68779\": 68843, \"68780\": 68844, \"68781\": 68845, \"68782\": 68846,\u000A\"68783\": 68847, \"68784\": 68848, \"68785\": 68849, \"68786\": 68850,\u000A\"71840\": 71872, \"71841\": 71873, \"71842\": 71874, \"71843\": 71875,\u000A\"71844\": 71876, \"71845\": 71877, \"71846\": 71878, \"71847\": 71879,\u000A\"71848\": 71880, \"71849\": 71881, \"71850\": 71882, \"71851\": 71883,\u000A\"71852\": 71884, \"71853\": 71885, \"71854\": 71886, \"71855\": 71887,\u000A\"71856\": 71888, \"71857\": 71889, \"71858\": 71890, \"71859\": 71891,\u000A\"71860\": 71892, \"71861\": 71893, \"71862\": 71894, \"71863\": 71895,\u000A\"71864\": 71896, \"71865\": 71897, \"71866\": 71898, \"71867\": 71899,\u000A\"71868\": 71900, \"71869\": 71901, \"71870\": 71902, \"71871\": 71903,\u000A\"93760\": 93792, \"93761\": 93793, \"93762\": 93794, \"93763\": 93795,\u000A\"93764\": 93796, \"93765\": 93797, \"93766\": 93798, \"93767\": 93799,\u000A\"93768\": 93800, \"93769\": 93801, \"93770\": 93802, \"93771\": 93803,\u000A\"93772\": 93804, \"93773\": 93805, \"93774\": 93806, \"93775\": 93807,\u000A\"93776\": 93808, \"93777\": 93809, \"93778\": 93810, \"93779\": 93811,\u000A\"93780\": 93812, \"93781\": 93813, \"93782\": 93814, \"93783\": 93815,\u000A\"93784\": 93816, \"93785\": 93817, \"93786\": 93818, \"93787\": 93819,\u000A\"93788\": 93820, \"93789\": 93821, \"93790\": 93822, \"93791\": 93823,\u000A\"125184\": 125218, \"125185\": 125219, \"125186\": 125220, \"125187\": 125221,\u000A\"125188\": 125222, \"125189\": 125223, \"125190\": 125224, \"125191\": 125225,\u000A\"125192\": 125226, \"125193\": 125227, \"125194\": 125228, \"125195\": 125229,\u000A\"125196\": 125230, \"125197\": 125231, \"125198\": 125232, \"125199\": 125233,\u000A\"125200\": 125234, \"125201\": 125235, \"125202\": 125236, \"125203\": 125237,\u000A\"125204\": 125238, \"125205\": 125239, \"125206\": 125240, \"125207\": 125241,\u000A\"125208\": 125242, \"125209\": 125243, \"125210\": 125244, \"125211\": 125245,\u000A\"125212\": 125246, \"125213\": 125247, \"125214\": 125248, \"125215\": 125249,\u000A\"125216\": 125250, \"125217\": 125251\u000A}")) (define (char-foldcase char) "(char-foldcase char)\u000A\u000AReturns lowercase character using the Unicode simple case-folding algorithm." (typecheck "char-foldcase" char "character") (let ((output (. *fold-case-mapping* (char->integer char)))) (if (number? output) (integer->char output) char))) (define (digit-value chr) "(digit-value chr)\u000A\u000AReturn digit number if character is numeral (as per char-numeric?)\u000Aor #f otherwise." (typecheck "digit-value" chr "character") (if (char-numeric? chr) (let ((ord (char->integer chr))) (do ((i (vector-length *zero-number-chars*) (- i 1)) (found #f) (result #f)) ((or (zero? i) found) result) (let* ((zero (vector-ref *zero-number-chars* (- i 1))) (diff (- ord zero))) (if (and (>= diff 0) (<= diff 9)) (begin (set! result diff) (set! found #t)))))) #f)) -(define (%char-cmp-vector name vals) "(%char-cmp-vector name vector)\u000A\u000AFunction iterate over a vector and compares each pair of two characters\u000Aand return 0 if they are equal, -1 second is smaller and 1 if is larger.\u000AThe function compare the codepoints of the character." (let* ((len (vector-length vals)) (max (- len 1)) (result (vector)) (i 0)) (while (< i max) (let* ((chr1 (vector-ref vals i)) (j (+ i 1)) (chr2 (vector-ref vals j))) (typecheck name chr1 "character" i) (typecheck name chr2 "character" j) (let ((a (char->integer chr1)) (b (char->integer chr2))) (result.push (cond ((= a b) 0) ((< a b) -1) (else 1))))) (set! i (+ i 1))) result)) -(define (char=? . chars) "(char=? chr1 chr2 ...)\u000A\u000AChecks if all characters are equal." (--> (%char-cmp-vector "char>=?" (list->vector chars)) (every (lambda (a) (= a 0))))) -(define (char (%char-cmp-vector "char>=?" (list->vector chars)) (every (lambda (a) (= a -1))))) -(define (char>? . chars) "(char (%char-cmp-vector "char>=?" (list->vector chars)) (every (lambda (a) (= a 1))))) -(define (char<=? . chars) "(char (%char-cmp-vector "char>=?" (list->vector chars)) (every (lambda (a) (< a 1))))) -(define (char>=? . chars) "(char (%char-cmp-vector "char>=?" (list->vector chars)) (every (lambda (a) (> a -1))))) +(define (%char-vector-cmp name vals) "(%char-vector-cmp name vector)\u000A\u000AFunction iterate over a vector and compares each pair of two characters\u000Aand return 0 if they are equal, -1 second is smaller and 1 if is larger.\u000AThe function compare the codepoints of the character." (let* ((len (vector-length vals)) (max (- len 1)) (result (vector)) (i 0)) (while (< i max) (let* ((chr1 (vector-ref vals i)) (j (+ i 1)) (chr2 (vector-ref vals j))) (typecheck name chr1 "character" i) (typecheck name chr2 "character" j) (let ((a (char->integer chr1)) (b (char->integer chr2))) (result.push (cond ((= a b) 0) ((< a b) -1) (else 1))))) (set! i (+ i 1))) result)) +(define (char=? . chars) "(char=? chr1 chr2 ...)\u000A\u000AChecks if all characters are equal." (--> (%char-vector-cmp "char>=?" (list->vector chars)) (every (lambda (a) (= a 0))))) +(define (char (%char-vector-cmp "char>=?" (list->vector chars)) (every (lambda (a) (= a -1))))) +(define (char>? . chars) "(char (%char-vector-cmp "char>=?" (list->vector chars)) (every (lambda (a) (= a 1))))) +(define (char<=? . chars) "(char (%char-vector-cmp "char>=?" (list->vector chars)) (every (lambda (a) (< a 1))))) +(define (char>=? . chars) "(char (%char-vector-cmp "char>=?" (list->vector chars)) (every (lambda (a) (> a -1))))) +(define (%char-ci-vector-cmp name chars) "(%char-cmp name chars)\u000A\u000AFunction that compares each pair of a vector of characters and return a vector\u000Aof numbers, where 0 if they are equal, -1 second is smaller and 1 if is larger.\u000AThe function compare the codepoints of the character." (%char-vector-cmp name (--> chars (map char-downcase)))) +(define (char-ci=? . chars) "(char-ci=? chr1 chr2 ...)\u000A\u000AChecks if all characters are equal, case insensitive." (--> (%char-ci-vector-cmp "char-ci=?" (list->vector chars)) (every (lambda (a) (= a 0))))) +(define (char-ci (%char-ci-vector-cmp "char-civector chars)) (every (lambda (a) (= a -1))))) +(define (char-ci>? . chars) "(char-ci (%char-ci-vector-cmp "char-civector chars)) (every (lambda (a) (= a 1))))) +(define (char-ci<=? . chars) "(char-ci (%char-ci-vector-cmp "char-civector chars)) (every (lambda (a) (< a 1))))) +(define (char-ci>=? . chars) "(char-ci (%char-ci-vector-cmp "char-civector chars)) (every (lambda (a) (> a -1))))) (define make-bytevector make-u8vector) (define bytevector u8vector) (define bytevector? u8vector?) diff --git a/dist/std.scm b/dist/std.scm index 970d6f9d0..048019724 100644 --- a/dist/std.scm +++ b/dist/std.scm @@ -4353,8 +4353,8 @@ #f)) ;; ----------------------------------------------------------------------------- -(define (%char-cmp-vector name vals) - "(%char-cmp-vector name vector) +(define (%char-vector-cmp name vals) + "(%char-vector-cmp name vector) Function iterate over a vector and compares each pair of two characters and return 0 if they are equal, -1 second is smaller and 1 if is larger. @@ -4382,35 +4382,84 @@ "(char=? chr1 chr2 ...) Checks if all characters are equal." - (--> (%char-cmp-vector "char>=?" (list->vector chars)) (every (lambda (a) (= a 0))))) + (--> (%char-vector-cmp "char>=?" (list->vector chars)) (every (lambda (a) (= a 0))))) ;; ----------------------------------------------------------------------------- (define (char (%char-cmp-vector "char>=?" (list->vector chars)) (every (lambda (a) (= a -1))))) + Returns true if characters are monotonically increasing." + (--> (%char-vector-cmp "char>=?" (list->vector chars)) (every (lambda (a) (= a -1))))) ;; ----------------------------------------------------------------------------- (define (char>? . chars) "(char (%char-cmp-vector "char>=?" (list->vector chars)) (every (lambda (a) (= a 1))))) + (--> (%char-vector-cmp "char>=?" (list->vector chars)) (every (lambda (a) (= a 1))))) ;; ----------------------------------------------------------------------------- (define (char<=? . chars) "(char (%char-cmp-vector "char>=?" (list->vector chars)) (every (lambda (a) (< a 1))))) + Returns true if characters are monotonically non-decreasing." + (--> (%char-vector-cmp "char>=?" (list->vector chars)) (every (lambda (a) (< a 1))))) ;; ----------------------------------------------------------------------------- (define (char>=? . chars) "(char (%char-cmp-vector "char>=?" (list->vector chars)) (every (lambda (a) (> a -1))))) + Returns true if characters are monotonically non-increasing." + (--> (%char-vector-cmp "char>=?" (list->vector chars)) (every (lambda (a) (> a -1))))) + +;; ----------------------------------------------------------------------------- +(define (%char-ci-vector-cmp name chars) + "(%char-cmp name chars) + + Function that compares each pair of a vector of characters and return a vector + of numbers, where 0 if they are equal, -1 second is smaller and 1 if is larger. + The function compare the codepoints of the character." + (%char-vector-cmp name (--> chars (map char-downcase)))) + +;; ----------------------------------------------------------------------------- +(define (char-ci=? . chars) + "(char-ci=? chr1 chr2 ...) + + Checks if all characters are equal, case insensitive." + (--> (%char-ci-vector-cmp "char-ci=?" (list->vector chars)) (every (lambda (a) + (= a 0))))) + +;; ----------------------------------------------------------------------------- +(define (char-ci (%char-ci-vector-cmp "char-civector chars)) (every (lambda (a) + (= a -1))))) + +;; ----------------------------------------------------------------------------- +(define (char-ci>? . chars) + "(char-ci (%char-ci-vector-cmp "char-civector chars)) (every (lambda (a) + (= a 1))))) + +;; ----------------------------------------------------------------------------- +(define (char-ci<=? . chars) + "(char-ci (%char-ci-vector-cmp "char-civector chars)) (every (lambda (a) + (< a 1))))) + +;; ----------------------------------------------------------------------------- +(define (char-ci>=? . chars) + "(char-ci (%char-ci-vector-cmp "char-civector chars)) (every (lambda (a) + (> a -1))))) ;; ----------------------------------------------------------------------------- (define make-bytevector make-u8vector) diff --git a/dist/std.xcb b/dist/std.xcb index 2f620ca6fbbfe883d406d982930909bf25cd3043..05617ff91db0adaaa403c868e3607d7783979804 100644 GIT binary patch delta 19030 zcmY+s349yX)joVBU)k5n*dE!kBgb-l6-)Lwv1G*~CwAgJd&uIfBoMGiGb3qiX+{}I zwhRF|A%T=aS(>u6K!KLUl(iK8wB@A%N=tcZ`X*>=;xs>iBqQ%Yft{pz6WE;*Iv zydtmYQi>NuWzr)hGh7@;BKhBM7b453jyfo}whcL*Yje7s)sUf6EvuRm%Bs|uR84A^ zcpsH?h045d829o2jB~&eRJuOf?^BN~qHm zEu$*hpOcd9G`JMej4B&&J)~u5CM6}44LFXfmf{d{CnXcbRWsz=nNT;;nENaI#Wag* zWn?I7+R*gu+6*b+>V#yHLg=dEEPfATQAzgyIUy(2z)w@$>5fm7{G^n0tt>dciZ{Ve zPsk}LU-XVH_}IHM6h7zl;uf+o#!VGx4LpW1u7i)1y@bodC3W8s7OGPTEva7OKitbz zc)Iz!gk@`p5|$I@Qmz*p;`pcB^+B`YLsuzTh;P6<*1-i_Z~Y?{Gw&;(L^Qdso^Nx%fZRy2f4#M3gOjJ-axnwq!&Sf(Rx?U-p^73SfG~UO#MECt7zSzAb{D-=uxZMqpzhH_# z(H`+egZA^?!?;US)X$Td>L(W0;{ZH<8^(j8l2Nlh_gA!kaOI?48dvdp(%O*5)t6z+ z)hTLB)A=JMT(#rczJcPbs9u2!&XSMt{78PKfUClN15_^YV@D^Q357y!PUosp6J@9t zqppR*18((W zZo6{VhLyd2D@O$UGx!(UuCmz8&~(g!8EN*Gx~*JPV*?=;nP86Hu}XnOqA z$f4rVSuuHPM3IUOzkO)lVn@Ky2v5~F5}jWtX~lvclWkiM zZDbK_7DEP<)c_f?3287(WxxSjDuVzBEF3@p1b_n)ZRK>#;ciK;xIr%{Gt{(J)3a#U zi9&iV6}3Iq&eN%cYI_2(VNncSz_4NOe_#W(umKHeaB&M7R8yf6fCEJg9gt+sp~Fl< zr7?Ia@{JP6l`Zf@fDgAbfXLt*vZ$4p69vGCuZD`VZ{feejz9>_*Fr?N7DB3@TP~`& z^9oxZ_P~z-A8J*53VVZ!F{R5hQbsM#cA|ECknJ6dY_#ypxDr08k>#?sstS(?9xr8} zFvKDn0@`-VszJ!?i43(>ORpxAsGdJjsN&U%jrb^nh{>pWMmv$!Ce;x4BQoXv)vriZ zrh=3E`y&23aQiBZ&+t}!UL#$DDjZAk1#ma1k6U=Th!^1MuoN!#>~y(BF{bR=(>qY~ zK!!OsxSojQ$FLyVdDzw7fi~L;b16KKZRd9NVCf@;47FnTydm6TC0E7ne@C*zW=`Ao zKp;z*_aTt!sf2xNeF8sHfSR5vxEpLSMD3<$*kUserE|CNXa zmlmJX`p+Ba(d0E+_0!w$N+}gl8yw%8^xa_r3WU)I z>V_T(D)s61)2}(2BHD#A|9$j53r$bI7X4U}7QGL-T2{xFA|Xn>+`_q~2>inAA2Jhy z=a;Ypum$kKKYGn!YM1JDZ?>7I-#Y!4qZ=MGaCzaa{;vJe;8))k4V025)L?Wvi`2Q$ zFTOBK@+mSu*X^#YeG9>|vTas>#kY=k_ayR>32&tO=6#~(?n17S@%`Rq!I`A0$Fqqd zcVDI9?)A){8P0VF&8!;Zhm)RR;vN|=SJ8uLfT1Kmm}>G27P#6?L*?iCeTMAa33 zb#!uRab{LjOf{3`ss|(am=K+=y&>r0f^>3e^}DN}a!OEjb#;n5ye-uI1(t7Fo1@~L>M-O)E_Gbhvk>g~s~97wB2a1ya^iUiNv<}s-@A`LQ~~vZ zJOp)rJf|T&+bx-H2bp?F-7itrU>h_1(9$#e?%*rp5L7Fvi z+f0aVh*90(c8)M2gKMe%xim73Nlj4|=kck8kyI%^i0X&Xvzp2PXNkF#$f^>mI0yeo zjLyIL4bq|hT68pbqT>FAVJOQr_u)QRfh$$=vm*7&lF3ySYA?jApj<{U9=n$`6=bih zjI6a*H$FKN$|N;eEs_HT&lm7GrWo(^V=r9d6GfJGCh&SzD*7*^X$Vub;8 zgp2K0sM&`TrZL3{q)RS&`5;#%s%uQssD5yLB;VF31m#i}MPpKS41!*@E4FTUP?|Q5 zXEX+uoQ(haV<_jl8As{o_j$ftjvK`NbRSE`_aPf+Nxf6YYcZa{)o}M)9_yofH$9g8 zrkZi~6m*K0(CW@6_Ypkh$G89=P?BjiySPa1!aV$G4DwJiYuv;Y4MR|$jp-9Cs3E53 zFTwk&aAWz+xEww!%TmADE8uo`oM!gtm(;*VVpPzhwcjI4)+qebzhfozxOKs*W3k5 z!f%thrpjhK05Lcp-d8lEw#EklrWhtQ@x$aP;@>limYQnpbw13`a-HZ{_k=<(5O(}X zazEy-3rkCfdW6A~NP+;xqIZz569(N!OWcHaqu_a7``O0sw}Kg;_FhVyBwVzO=@_D59dBLA1+VC=%;o;)b5RrlwNtm}<3Et5lG6H^D3hPzy*sgwL|FN2 zem$3cKh_=W_ba3Y{ml2&K~fV3mTD*yuWwupJNW49(&X~rzWS!%zm4X)t1d1%zTWdC z>dYn=mK}qQX*ki-@k>oF`9lSF=0tS*`D{U@+_!1$(RchO78IR#ijF47Q2>+UuwhVq zN-8UV^JCV0MW1Fn-yZJxOn3bP)`=!chwyfcuZ3h)&%9ooUGDSC!85PNl4o8&RNPxJ zCd=nOTwW@piQ+u6m{ckEyw0AotfZ$cLDt460cZaRK+Ekdh_-LM_j9rf?Kje@9@O-Q zVSj^_FY==?cjXA`0CRRPzW*c?LoxL#@h;mS`Cp*Pmm(0WFNdPbFmxc~n3^NcXE>TEP*e}TIr-LK<1QP#0K#jO{!NiB^sp$#l1ci^mvE*~+>Y_W$-i!tu+ zTqWt5(x}ebbn^9}iu6g%H1w3ZP)AE0kpE;!Oev@%jMLCQlRRp4=dx+v5hzX2Q)T>|ztuj0I-o#?D-_-qBgun!`WtVQeRzHsRG@hFJWq=#2F^ zCj(BFtYa1zA+@JqJTcy|ER$EQc^}8we$Wm8y!8EOKM}g@`<}_8H?T|vwp_s#^ z{Ls*CWm+~-&f^6oq?{j#=3+6`B(O`)9~sfC=(3897*{9e>yz3i=}f5d!Y&_K zMgLqEeVTaGEY#GRmx=2Q-xMpSrK7Bm!D5R0YY^y`$^#4P<6R zpsD24{MJ~pp$E4U+E4bcM0y>`loxv^@XAQO<-lot8W(3D$GPOGg(W*k;f*Saf7LaD zp&VsJ_0*Y2&)%VbRG7g{Y2(z%2TtY;`?rFF7U~8U&J+`~9fxeuaesAPZ$!xN7S?xB zF9-z)qLd{k>eNKGQwU6?HI^?F2qasLqdoCHm2Sr)kKfr}Wlw#KpjgHor^^T5mwZuQZV;ZHR zMluvL%r>qr65}o{ZitI9yV5l;l?9TK10e|_de1eHymyTtw31f~S62X2$wP9IrKc*$ z$9GgH^YG)_<|QlU1yhoIm1$J;kt-<)0vRE2>CcJhwonZ6g0J-T}b*xtj6+zwnX( zhr{f)O+$7vKRn>76;=RlaIoo2=>xXWZSht2)k23U59Ul0T0z(2>B5f;M@(1*{Gz7a zKeQD$!+ja8)5_BF`&OQqq&EB=-`AJpL5tFcTf?tJ#!pxaF)vr~G4A>Td^{?A0MHaj zf0(R3mNpt5AYJ=({FO4mn^tyrfTE+uRIzcVtgC$0@i}_$T1bMpkjl*afrUp&s3TqB z{fUKlxl<98_d_THnqW<-I!%Wmv#>c$DnKjRpF5$M&~$O9aTmsy;T+KZcuwEH@DWao zuG|y$v1seC1@U?XS}gI3-^bH~syY$Ob#o^p&*w7&?`m_po#dwoVsLwbX-|-IIz$JJ zA}Bakjdq|jY1`XYLfg2LR%4h=P?bq~2dtfd5WINM(U2=!9Qj^=&9_)0d+m@R7NSH`H_KrQB!R>-KKZ#(Txxo-Z5w>gW~ z_i&qa)gHy8wy#s;cpA6^sQn34auBVt3YN|(pvXJpIS^w(Ay5IHbmJgeZO{a;-oQ<)J`$>^E3JVwab12Dn~t$A?96OL~c3_Tg0=C1^D zV|Sxo2~A2`l0hoVoOfUs0WHh;k3ragz7Ur1Aa$Ru#|s!qv$Tx?5lFn)i8!A4Oc~AP zR#2OV7g)A^Mr^^`_mi(PT;ccNtySoQZ!wupcVxEyO2{Ic2;>AVb_v=~x&0(y6Yy8yK^DgRhe$R58OOo>ui)RZ;13etcJOcH zi=*yuiF{Xpkl@k6C(bn49K^q3G~ZU&WeG{yZeRf*Ji4m$$)EEdd)vvMx#ew6Wg+=T zWm_BNmY-s~WB#J6HJdhkt)tuo_v4Dap;)D#Z<&HV?isx^%z%e$Dj)5J1V(v052}Rn zEM8XmDu{El9#7w&q6xfNmkKGg&Am9XCx4lM2L~sqJJcpPomEbu1IBUS=)vs%)bO?;-}Z_tvr(S3eO#)_z2yYkz#m9LoS56$XBcsT?)y183QLyQ-u zEAv*n!Q#~Q;#{3s55djq%o0(Zv2@1bEVrc7bk4JCjQc-oOjNfiKxpx1s4$-}jc94z zCfo!SW(^x>q4Oo&%Zfwz3kRYGzlM18H~M{~Q|4raAKH02OpFRenf#H2L0!%+C4&49 z+pp;IXj}j1kL^5+4`BSJ*!?F(R(5tdvbc*u=l*EJ--6I^SYr-yT8w?a@&}zOR2#4C z5%y^}Jkhr3lF0aZ!_l@~vcAG-c{o}1w)3I|vjBso=ip-igYR46G{#`C2zM^HWNZ~K zR<~?*N+jRK%Ah^i*z8-uC?H}5j6omDo`pX9KY5_`34mY8_pt$&y%6IWQH`o`O{bZX zo4u_rfGj1=bYZ-ri7e)#?x6@F%^;BROibaw zJfWxvx-2yaC^W&>kbsP8i=JmlO>8iyCpCQn*L@5#X!rTJ&;XZ>CC99W0ylA3d^3S} zLXky#a0s`|MDoi8MNPW*4^uZAvaTlcGd$Do$$W^snK?>E@hX3)=($?dmiJF6Riu~x z(0_pB0Y1z$z(#qj8u z(3s+ZhOiEiYF&noH5r6vJQ4K3n%a+$I#^pDf#_kSzH7tn_)RGLGIxcls?t5G%~GN-2)xp|;n@Z)evJk&B9+{~P7o!wc{P z(4v-D&))Gjphm$Dm+pdmihw#661@KMHEmAfT$MzpAWqXLm!*)kMs7HZo$NXR*S~@O z+Y{W&k#X-vu3B`}qmDy|inEb%ZCFR^3hc7z>d0#o+-|VcL5Byk~f5|Omdx$RB!a#j zT%*|Yr-w>~?j`QOF`*!fn6p4Jz=|{{rnS>WF}xRo1Xoj?hdxBL{Y9sn5VJV}2t;j2 zpj%+nuyKc-I^1)b3IllX4AEGPdmDn$3R+QUrx_mJCJRy3nk7s~2~ssLV>L~tz=HtI zMJ|J;==SB?cW_ij=eC|;Rrp%ap+4pvov5<%$oA5t^9oQlO|;F2MW|Jv9E*wvMBfq{ z?v3PMc|q{EQ!Zc)D%#)L(}4P*UXAr~zOt7`3XDjVEza1=RRp7I%i$7H&64wDD1aZQ zvF)aPJJ5;kv}CIaB;?|x8p{T=$S}2d0s@YjifTGhBRn>UKuqCa(h#HTxoipfR$%Zy zROE`PNOGzb&unWhZ-`}F1D)tuE>d7}GE|;kTm>yo9WW2bhO@$f6aMpG!a?oD!uE_j zbGEtRz8|&%H!3vC@&U>09cJPHj>B(+)bb9l4W?znl~JR~Dmph=MMqYe_#yxEtari9 zPWJjvl`krg%IUH$+d$+M*bjD{zeYPoi$RfzA&;jt{m4g z>7+DW(T<-yF0wgCrhGlj-&ZycktUUXt$MNhCQ<248;%l&_-x=YW)1wg5mG%~U-efx z(X^i9pc`F9vOY;dpCY z(U#pD`*x<~21T~{8=FKIaYb%~o_^VZ2~#D|(F&Vc6MtE46aER%w;qAEdg+9HO5ni- z=qxx(x1&v!rlr4>PB@M7?`PTpND-T?q$GXX2J?Q_y-!MLt}%B;i5fGI3u+*g2S6vL zGQiK&cBb51m7=(=E(?HMm%*BDzd>>WWd#<#J()Bh*08G7)H8fYA}f;$M$qJ0E};Ts z5*zAYXsVU>qCHL<_o=1(=*C6Vu~sS*?9ZWVJhxNV$n7xmzz+wFm_3Leo)djw5(L$X z1EavEP|>M7*1;C=6AivKpbi@-;vz>YK z!@)NdP`$B?&xh_mm!7Le4mw)#jS?R{^s>hMHbJmFq^J3A+4i-@O(T)~mjuruiW=JT zFsMO6=LD*9JeMAnGORhVKPn+hOx3g09<^T#QU@5*W@3PLtr?0}Lod0r0IMiVgCsqoHYCqejuqo%@oInEO{;k1EzRFSqHJd#|p+*By>QDH%~*u@|lkZ z1?EPwyY9EVjyK(bJ(0X9INE|Z(pJ8W>b5U!ulc4Pyq!sL$@0C_wx>=a&4F+N^#o<9 z)a3W$ouU@dv*AQAEjb!MRndN%v|SZMi}@B&xY2!83H_RXs zJRr7gcubIB9s?VZqH|Kp79=ebFyoc%$8#_;w%tu?6a)1vAmXozyX(YzdDXVk8AQZ~8-!^(K@<}_pNi>gYerY_ zduSR)G)t+y6U`S`*O;A$YS2&`@hex-zTZUcK|`H%UB0oxAebh?ZQNu?K-;eujGII5hK?3wC~ zVr(mDsE1@KI$|TsEFD#mhUg{WE=|TLpFYT690VxWWc$7ks2BVcbuYD#;jg;! zJPbZEF|jcvrHgg5R^PX)!`3u)2|1v#v7rQ1>kd=Kd{Mv$@;i{ z(h_&cw8nA&N9aNH_;dw8r+zX|w;w{=c!A0Gmg2zSu-+Hmw!@f>&iRP#|bx`~k~{ z7|T+y1Z|Dc@BZ6Ht2pi};Ra!H8)K=}Ybsnd7!6>YFDAya#tvXiCkwPcR+AkeD^eNK z4QqTjt=7F5i8lAr4fgmNb()QHf(!e>021ta36Djj{wD83_)%!c7;XPog)kbEe&S7tw|3|t z*{q{~ks9*=Fwh4`D^y#SRm(_?265D#4(jAO%eyH5P?l;3Auv6K^}=n3<+vZb-m+Am zb*g(J86m^l{5@K0)*CgMT7|o>_OV>^UIp zY9A~W!!vlq+C8^nF7rj(t_R)e*<~H!^I(zG$m(!&Q}_~mFI?;hd(`YvXzN=)hlT&w zkf-`e5-e%oM`}`*N(_b|Hhb35RW=Nh=SHId={_i1)e}8OecZdOoI4C!{Al6i<~@o& z&xL0rFvnR6*Ox+cUHi>q;#O1$dRJQs1U&C8;tF@e`ZjziGL89Hn6XZ5?B%J* z91!JsSKtwNK$d(5x7N;iIGbBfk@mQVJ=+V+OclO!Z}q|OhH;BT`Bokg?$jJlG0FE# zuxz0{d}!$V)*4)IoC&7QGr^Q|+%s%)`*jd(>cVfUSYMs3{3Mebho5B%qPem!u6$YS&LJ0)}ybf~X0L=r3T!q-= z4J1Uc4$O^1!CMFA04T;5=zd_(vn7{8z$U1$McNW+qvW{|w+*is<>y(uRu$JtXm!R# zI--W@59LGJZ5gx&y7NGIXEMO;Dh-xh#`S|k-bm#OX^=->BAxzMfUyr7{scgV&VRXs z)pZfXWoZxwrqHf%Tg4vtAT-b}($c+5OZ7_eoy+hFaAU5GDYmX-nx=#Fp>=1~0WRga zlsQNaED=0(>22kgIBs_PLN(kF?uI$xhcLbU(g4>;E+mWco-Kv)TTy7snsq}vH|$1h zMmKC(yJ5?Q^v=DIP2abWRZ8@YY~8UT(f6QB=5)h#WY5Jiy!09FPT}s;^Si!44t>eH zY31F%BP11D(HMt^IIrQ=R)Jr*yPj(bReVOGf0lz|THVS4&hK34I2VLq(v{?H3_``h znM{FiO9VD)QQic*0MA4DA<%FKo@CW$211sV{nkrn&ekAq`4Abksu1W2C)g}Rt$2<3 zGq;O~f~A+5xIKhNM{#Q=4I_8>FS6kEGl%L=MC>zTD^hd?-!&_iQN#ZsnToMQ_)bAr z$mlFro%p`yIab4oCEfaD_`0(V*d~ZsXnW9E-;UmrbsZ!gDZ~XtQ>5SV|8-XMr@FtV z0^b2SjayB&$@(ES1!7`a+qL$T?VCV4Ame7ee~pZLUZmVQ(ZAn@cSiCJFbOx2DixGz zXm>R*4M4a7D{iQCySq~KxFZWXdF3oX;~IE~L`FTHwPKtfzv^$N$V%BZHI`8lM9OOI25TF-#eO9dhRVNzY#rE5nQxV_EF8tScVCNlQCH)G% zlgnZLY4&%_tABu0y_RrZRDX}~?8udDFx319cy>s9QMS)g`L?ZPq@TZ#a4O63)9UBX zkj>s3-OrH1e81xUZ{{~-^&|mRX^a^cQi&N4wH16t}h6Gei0$=CQ@FUFG`Y!67t z4K^V8hc--@fxkwYiKo$>lQ$GKm|KV`4p5m)ywwf`WzHn16Z1ZMw;*}emc zUXO71YRs+21tC*b(H031pT&xiZn0w1D5o|u+m>Qok>K!slOav7~+XLWJ{SAUoa zE(c{gW%D3JdK+-cMq>{&7^|B}XelY}EJtDIW<15nZzbiv#!o*er>Z6&bgZg4;>oib zxoFl?2^GnITuomK=gbB;Dk|Ro68wxOGB+Gu#RV|9CoP3}kYxo-mAw%>sg=Jtr!E&P zc{ww!d$NGW*9kkosO$x&@-pTwgt$L$F_1p~8sg5wgpj|$e;a0!Ezia$^G}J2aROc% z&cVkJ4L#OU3n!W zZvhTLs1_$t3bvl@7YThspZil}(|SpU;|P=9Q(`=+9f*cJHNr8RRxnZ26HIo<^j+%i zA%VfUdKx%9!JJn?bTPo_s*-Pz0K-PUS$syr9D_pS!W-|vJ{TklbQ#6X%zI&3wh9=! zcyQ>0;SEnyez(<5gFP2!XW0b5;1%3Sc7=SlwUx1o=V{BZH`kI-XOmy>lvtjKpS8UdgvI-eDLACSuz&M12At`n$m zQ2it(CCi-nK0n41J5I*}%W`?cK;f**`!nCnN7x&YOaz3HRX6&L>hsSlaxBGI)|vdX+3@m9uwH?+u}I7J0#I37XO7bH#w?t zFR5tEdum`mx}gS^EWkc^qWDZe%`^PrZk!QgDMQI6dEcMK$m1eATc6_|;4Twmx1@}U`L!EiCX#7Q{;?neLY2hZ*95lU^=Duq z0iyDK^aY_itb|*y!Ak(e;{Xn_6j(V37BI+iwJT9kv8RvsGr}WF1GX=dd31{1R(MH_ zod9E#l(JLzmoWL3#mG;6`H*W?KJ{e-Uk@L7nz-U^{{ww9jLVcEM}ZxG!?32GiGwRu zv{LECgFtFF&1*ff-j}TUJ<|x?)+lc)V;$Bv>Wvo?s9HLkn2qx~~onlA1KL1$*wrKN(sV zKO;Dft?H3*KoJ#?w3wuEq}1mvUVX^&>0U^V~C{%8XGrC|m_;Npej=v*cZS zhI*h9WaR`~Sy{@thoXJg*ebv$117(MD2)n>&-kfu3fH@_yAO2dA?zMv=>!y%e@H~o zJhL;p#r|15%q>LKh$oyJN`^w-2CgOuB??w&CU(uj?CXkY(&8q;?!?4%`H&Xdfxd3=s~$S<_naxKkSVXe90 zdT^DZN|oZKxuGGO=M3R$kdxu$s9#2EI$MCGY6pWY%v0dZC{xm-(@s;;>>1=^DrrWF zP9irjW6u-hLV0k``+>%?cc7-|G?i`7YWN(S2{qrHV#XRqpR8DL=Zh8Z<@j0%W;i`! zPIo}Q-o$XY(Ge7rT*qM0gj|BiD8vRWz*2!!&O}$p>`WhcWR!v|za$3Y9E6p9CzmK|e_+V&^Zc7V%De5n1EiGauJLi`9^-z7MGOaBlIH z`+?2bug;>N0@w}h6c{6vs*7&q2Ib1B>g!0=+WSN!X&jcNvag3=92SfWvPJ;h`78Gy^t7aAA=_ju7_SPZP|NS z{0kA1-!Am5g814#Xq{80d;>*OhB?9XTwDER?G$!i%AuqsVq_Ch)w6il_D%K`_PW$){?jK~ndxe8Q5;Za{56)Y~;^@0F z9AJY(3oPfvSL0^MD&dX^cra3im2`Z{m3-nA$^fSsK5+ADRWJ zqax>a0S7OQwG?3ySo<}vq|el9J zUNq50#wlmmVE`Dec{+F|l^{5Ol7f>l*-X0=zSIH1L3K85lEHP7gb51dJs_GUp~g`0 zN3-x<4$!Nb_+07&|CMEg8c*KNY))(N{vzqzC&u|(AoGS&2u_}bvc@QLv5i4@z|M)2 zKn$E5v0!zI{3U1%T2|o!t}r52%BYI#2dW2w<`7z7+Rn&vV&<#_gn1k4XVMP{V8doZ}1J!kVan2zCslK#b8@= z_y6t|{?{EW5%(Oc{sLc#RFxumk^`4Ot>GqRM1QX`f8y*ugO7Sv2rd)Kx)Tm4-3drJFzo{pU#%t+AZ zWwO-v^K46e25;~nXtbTtA37}l}&K) z%IYVkfrACu_Xy}z9zuJq?R54=T_vR%)x59?bSOMfEL7H7dXDX%Kr^+XxWM08@-luM zHXDw@Tl*C3pGR)x#R>jrA$ZiUb8s37ybY0|t)BR{txxmYEhUIM2e0~{NPb4x*$HP# zeHQ|Wp0sgrD9SW$x8AINPiXTw2nM&72lFT#D*nm30?gRB$G?K_6OZif3~UE&r~gth zxRz}8m09=j#LBowxE^Mqfr+dQy$k0wffp!y11on4?Ot2^+UhO3omOsztb|#!&AuYb zzV?F}r7`C)cMcRVr~|S}H%dBK1HcWlw4E;P2`>)=BIMx>L4N{c++eVul+gu=w?UF0 zm$J71X0pzDQR<*R3BIocj#>l)mdoyVa9oSUrs1$f$E7LvfARGWU>ufoVmEO;94ii{ z)sMkL^(cHL0B-SP5}Mz(V&CNY?=I$U3@b}?h(s9kk&TgWG;E>3Gs0-=-&rm82afMxYvnAR%Y_Ar*ze}-I zcB^{*J)PArMDib&3POWjWr<>PI_2kcU_#rVBWit_j+S|Yt7Z#qzmU6$zuxBlqH`~} z%E0RcMiq@68$Sw9gq8v3pSBu&;`!*7f=eso=)?i z8FVW&&~nJV0fRW#N51J4?Y6}ZW>3>|w$^;fs^B#x)f>r5LkhgAgN?5ISGXbkU)5Tt zO$F@t4&7qn`!{LoKshXTy!5efS?Lo%Qfk;y$?RqHN;sS!V+FyRQK)xMb1u6bV8F-G6Nksy7#iMDc|W;ThO;A20?Re78(s2rfNmM^#5yzwDmW z@ni_iId06gD|T>Zr_GO7z}+Sg)N&{vO7MUZMO~nz6tE?ycmPjrF)}YcVulTHobjw% zNzPcVIC#`b8~idnMaD?lC;5N~lz3cik4s0QotdeA&lJ7MSofvUWhgIIsWZg2lSS(>#E zduE5%?%1yG{~&ie+>8H!47wG3?CYyx*yqN!iMHn_H11@@wwsf-6}E9TGzEuKbo#c{ z<0DIOg?ebKZjIy@Y%%Csv;(?6$a-1_M-b|F!els-)^LW}H&Cen=M6y81HdafZ|m$u z#qvP_7VP~V96PYR<*vd+gp-3=IEMj4=y$B%8k}^j=BPTE48{FnXrObPkws||NH1Qj zy`Xa|gJ{X(#onXtnH|>IylC5NGWtQWhCDzTRlS+O_QS}5`Jg*dH~c@dj960$ae`eL Zg@BrkLWm&iC(s}u2$#8!|LgbA{|8p&Jy8Gv delta 18218 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 diff --git a/lib/R7RS.scm b/lib/R7RS.scm index 708919ab5..cb6b01eb8 100755 --- a/lib/R7RS.scm +++ b/lib/R7RS.scm @@ -1045,8 +1045,8 @@ #f)) ;; ----------------------------------------------------------------------------- -(define (%char-cmp-vector name vals) - "(%char-cmp-vector name vector) +(define (%char-vector-cmp name vals) + "(%char-vector-cmp name vector) Function iterate over a vector and compares each pair of two characters and return 0 if they are equal, -1 second is smaller and 1 if is larger. @@ -1074,35 +1074,84 @@ "(char=? chr1 chr2 ...) Checks if all characters are equal." - (--> (%char-cmp-vector "char>=?" (list->vector chars)) (every (lambda (a) (= a 0))))) + (--> (%char-vector-cmp "char>=?" (list->vector chars)) (every (lambda (a) (= a 0))))) ;; ----------------------------------------------------------------------------- (define (char (%char-cmp-vector "char>=?" (list->vector chars)) (every (lambda (a) (= a -1))))) + Returns true if characters are monotonically increasing." + (--> (%char-vector-cmp "char>=?" (list->vector chars)) (every (lambda (a) (= a -1))))) ;; ----------------------------------------------------------------------------- (define (char>? . chars) "(char (%char-cmp-vector "char>=?" (list->vector chars)) (every (lambda (a) (= a 1))))) + (--> (%char-vector-cmp "char>=?" (list->vector chars)) (every (lambda (a) (= a 1))))) ;; ----------------------------------------------------------------------------- (define (char<=? . chars) "(char (%char-cmp-vector "char>=?" (list->vector chars)) (every (lambda (a) (< a 1))))) + Returns true if characters are monotonically non-decreasing." + (--> (%char-vector-cmp "char>=?" (list->vector chars)) (every (lambda (a) (< a 1))))) ;; ----------------------------------------------------------------------------- (define (char>=? . chars) "(char (%char-cmp-vector "char>=?" (list->vector chars)) (every (lambda (a) (> a -1))))) + Returns true if characters are monotonically non-increasing." + (--> (%char-vector-cmp "char>=?" (list->vector chars)) (every (lambda (a) (> a -1))))) + +;; ----------------------------------------------------------------------------- +(define (%char-ci-vector-cmp name chars) + "(%char-cmp name chars) + + Function that compares each pair of a vector of characters and return a vector + of numbers, where 0 if they are equal, -1 second is smaller and 1 if is larger. + The function compare the codepoints of the character." + (%char-vector-cmp name (--> chars (map char-downcase)))) + +;; ----------------------------------------------------------------------------- +(define (char-ci=? . chars) + "(char-ci=? chr1 chr2 ...) + + Checks if all characters are equal, case insensitive." + (--> (%char-ci-vector-cmp "char-ci=?" (list->vector chars)) (every (lambda (a) + (= a 0))))) + +;; ----------------------------------------------------------------------------- +(define (char-ci (%char-ci-vector-cmp "char-civector chars)) (every (lambda (a) + (= a -1))))) + +;; ----------------------------------------------------------------------------- +(define (char-ci>? . chars) + "(char-ci (%char-ci-vector-cmp "char-civector chars)) (every (lambda (a) + (= a 1))))) + +;; ----------------------------------------------------------------------------- +(define (char-ci<=? . chars) + "(char-ci (%char-ci-vector-cmp "char-civector chars)) (every (lambda (a) + (< a 1))))) + +;; ----------------------------------------------------------------------------- +(define (char-ci>=? . chars) + "(char-ci (%char-ci-vector-cmp "char-civector chars)) (every (lambda (a) + (> a -1))))) ;; ----------------------------------------------------------------------------- (define make-bytevector make-u8vector)