Skip to content

Commit 8d2d156

Browse files
committed
Update run-time style for Dupe and Extort.
1 parent a8fe3ff commit 8d2d156

2 files changed

Lines changed: 22 additions & 32 deletions

File tree

www/notes/dupe/main.c

Lines changed: 11 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,27 +1,22 @@
11
#include <stdio.h>
22
#include <inttypes.h>
33

4-
#define fixnum_mask 1
5-
#define fixnum_tag 0
6-
#define fixnum_shift 1
7-
8-
#define boolean_mask 1
9-
#define boolean_tag 1
10-
#define boolean_shift 1
4+
#define typeof_mask 1
5+
#define val_shift 1
6+
#define type_fixnum 0
7+
#define type_bool 1
118

129
int64_t entry();
1310

1411
int main(int argc, char** argv) {
1512
int64_t result = entry();
16-
if ((result & fixnum_mask) == fixnum_tag) {
17-
printf("%" PRId64 "\n", result >> fixnum_shift);
18-
} else if ((result & boolean_mask) == boolean_tag) {
19-
if (result >> boolean_shift) {
20-
printf("#t\n");
21-
} else {
22-
printf("#f\n");
23-
}
13+
switch (typeof_mask & result) {
14+
case type_fixnum:
15+
printf("%" PRId64 "\n", result >> val_shift);
16+
break;
17+
case type_bool:
18+
printf("#%c\n", (result >> val_shift) ? 't' : 'f');
19+
break;
2420
}
25-
2621
return 0;
2722
}

www/notes/extort/main.c

Lines changed: 11 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -2,28 +2,23 @@
22
#include <inttypes.h>
33
#include <stdlib.h>
44

5-
#define fixnum_mask 1
6-
#define fixnum_tag 0
7-
#define fixnum_shift 1
8-
9-
#define boolean_mask 1
10-
#define boolean_tag 1
11-
#define boolean_shift 1
5+
#define typeof_mask 1
6+
#define val_shift 1
7+
#define type_fixnum 0
8+
#define type_bool 1
129

1310
int64_t entry();
1411

1512
int main(int argc, char** argv) {
1613
int64_t result = entry();
17-
if ((result & fixnum_mask) == fixnum_tag) {
18-
printf("%" PRId64 "\n", result >> fixnum_shift);
19-
} else if ((result & boolean_mask) == boolean_tag) {
20-
if (result >> boolean_shift) {
21-
printf("#t\n");
22-
} else {
23-
printf("#f\n");
24-
}
14+
switch (typeof_mask & result) {
15+
case type_fixnum:
16+
printf("%" PRId64 "\n", result >> val_shift);
17+
break;
18+
case type_bool:
19+
printf("#%c\n", result >> val_shift ? 't' : 'f');
20+
break;
2521
}
26-
2722
return 0;
2823
}
2924

0 commit comments

Comments
 (0)