You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
29 lines
634 B
29 lines
634 B
3 years ago
|
/*
|
||
|
* Copyright (c) Facebook, Inc. and its affiliates.
|
||
|
*
|
||
|
* This source code is licensed under the MIT license found in the
|
||
|
* LICENSE file in the root directory of this source tree.
|
||
|
*/
|
||
|
// modifies x (a mutable reference argument)
|
||
|
void modify_mut_ref_impure(int* x) { ++*x; }
|
||
|
|
||
|
int primitive_pure(int x) { x++; }
|
||
|
|
||
|
int fact_pure(int n) {
|
||
|
int f = 1;
|
||
|
while (n > 0)
|
||
|
f *= n--;
|
||
|
return f;
|
||
|
}
|
||
|
|
||
|
struct node {
|
||
|
struct node* next;
|
||
|
int data;
|
||
|
};
|
||
|
void create_cycle_impure(struct node* x) { x->next = x; }
|
||
|
|
||
|
void invalidate_local_impure(int** pp) {
|
||
|
int t = 0xdeadbeef;
|
||
|
*pp = &t; // <-- potential bug here since t goes out of scope
|
||
|
}
|