summary refs log tree commit diff stats
path: root/on-racist-jokes.html
blob: 15f31e9f93e0c8042966900a786bf003b8941e9e (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en">
	<head>
		<title>On Racist Jokes</title>
		<link rel="stylesheet" href="/oldstyle.css" />
		<meta name="viewport" content="width=device-width, initial-scale=1.0" />
		<link rel="shortcut icon" href="/favicon.ico" type="image/x-icon" />
		<meta charset="utf-8" />
	</head>
	<body>
		<h1>On Racist Jokes</h1>
		<p>(This page was originally written as a response to an event that occurred in my year group at school. It has since became less of a current issue.)</p>
		<p>The use of the terms "black" and "black slave" as insults is:</p>
		<ul>
			<li>profoundly disrespectful towards the millions of black people that have been abused, discriminated against, and treated unfairly, in the past and the present</li>
			<li>ill-considerate towards people who are experiencing racism</li>
			<li>demonstrates a toxic and arrogant lack of empathy towards the disadvantaged.</li>
		</ul>

		<p>
		A common argument to make here is that "consider how you would be discriminated against when you become the minority, you wouldn't appreciate such jokes on your social group". Although we head in the same general direction, I do not agree with this frame of mind. Discriminatory jokes are wrong, independent of the possibility of the discriminator being held to the same activities in the future.
		</p>

		<p>
		The argument to "take this easy as these are just jokes" is ridiculous. The mere act of descriptive terms for a specific social group being used as a "joke" undermines the seriousness of the social issue. Find something else to joke about. Not something like racism and other forms of discrimination.
		</p>

		<p>
		It is similarly bad to direct hatred towards others who fight against racism.
		</p>

		<div id="footer">
			<hr />
			<p><a href="/">Runxi Yu's Website</a></p>
			
		</div>
	</body>
</html>
"p">(load "~/61a/Lib/mceval.scm") ;; To run without memoization, reload the first version of force-it below ;;;SECTION 4.2.2 ;;; Modifying the evaluator (define (mc-eval exp env) (cond ((self-evaluating? exp) exp) ((variable? exp) (lookup-variable-value exp env)) ((quoted? exp) (text-of-quotation exp)) ((assignment? exp) (eval-assignment exp env)) ((definition? exp) (eval-definition exp env)) ((if? exp) (eval-if exp env)) ((lambda? exp) (make-procedure (lambda-parameters exp) (lambda-body exp) env)) ((begin? exp) (eval-sequence (begin-actions exp) env)) ((cond? exp) (mc-eval (cond->if exp) env)) ((application? exp) ; clause from book (mc-apply (actual-value (operator exp) env) (operands exp) env)) (else (error "Unknown expression type -- EVAL" exp)))) (define (actual-value exp env) (force-it (mc-eval exp env))) (define (mc-apply procedure arguments env) (cond ((primitive-procedure? procedure) (apply-primitive-procedure procedure (list-of-arg-values arguments env))) ; changed ((compound-procedure? procedure) (eval-sequence (procedure-body procedure) (extend-environment (procedure-parameters procedure) (list-of-delayed-args arguments env) ; changed (procedure-environment procedure)))) (else (error "Unknown procedure type -- APPLY" procedure)))) (define (list-of-arg-values exps env) (if (no-operands? exps) '() (cons (actual-value (first-operand exps) env) (list-of-arg-values (rest-operands exps) env)))) (define (list-of-delayed-args exps env) (if (no-operands? exps) '() (cons (delay-it (first-operand exps) env) (list-of-delayed-args (rest-operands exps) env)))) (define (eval-if exp env) (if (true? (actual-value (if-predicate exp) env)) (mc-eval (if-consequent exp) env) (mc-eval (if-alternative exp) env))) (define input-prompt ";;; L-Eval input:") (define output-prompt ";;; L-Eval value:") (define (driver-loop) (prompt-for-input input-prompt) (let ((input (read))) (let ((output (actual-value input the-global-environment))) (announce-output output-prompt) (user-print output))) (driver-loop)) ;;; Representing thunks ;; non-memoizing version of force-it (define (force-it obj) (if (thunk? obj) (actual-value (thunk-exp obj) (thunk-env obj)) obj)) ;; thunks (define (delay-it exp env) (list 'thunk exp env)) (define (thunk? obj) (tagged-list? obj 'thunk)) (define (thunk-exp thunk) (cadr thunk)) (define (thunk-env thunk) (caddr thunk)) ;; "thunk" that has been forced and is storing its (memoized) value (define (evaluated-thunk? obj) (tagged-list? obj 'evaluated-thunk)) (define (thunk-value evaluated-thunk) (cadr evaluated-thunk)) ;; memoizing version of force-it (define (force-it obj) (cond ((thunk? obj) (let ((result (actual-value (thunk-exp obj) (thunk-env obj)))) (set-car! obj 'evaluated-thunk) (set-car! (cdr obj) result) ; replace exp with its value (set-cdr! (cdr obj) '()) ; forget unneeded env result)) ((evaluated-thunk? obj) (thunk-value obj)) (else obj))) ;; A longer list of primitives -- suitable for running everything in 4.2 ;; Overrides the list in ch4-mceval.scm (define primitive-procedures (list (list 'car car) (list 'cdr cdr) (list 'cons cons) (list 'null? null?) (list 'list list) (list '+ +) (list '- -) (list '* *) (list '/ /) (list '= =) (list 'newline newline) (list 'display display) ;; more primitives )) 'LAZY-EVALUATOR-LOADED