Fuzion Logo
fuzion-lang.dev — The Fuzion Language Portal
JavaScript seems to be disabled. Functionality is limited.

file

io.file

file -- a unit type that contains effects related to file I/O

Reference Constructors

§
 ref
:
Any
 is
 
[Contains abstract features]
reference to the seek operations that could be provided
§
 ref
:
Any
 is
 
[Contains abstract features]
reference to the writing operations that could take place

Value Constructors

delete -- effect wrapping the file delete operation
the mode to use when opening a file
move -- effect wrapping the file move operation
read -- effect providing byte reading operations from files
seek -- effect providing stream seeking operations
stat -- effect providing operations to retrieve file stats
write -- effect providing writing operations for files

Functions

§
:
Any
 => 
String 
[Inherited from  Any]
create a String from this instance. Unless redefined, `a.as_string` will
create `"instance[T]"` where `T` is the dynamic type of `a`
short-hand for accessing delete effect in current environment and performing the default delete operation using io.file.delete.delete path
deletes the file/dir found in the path
returns unit as outcome in case of successful deletion and error in case of failure
if the targeted dir has content, then the return value will be error and the deletion will not take place
§
:
Any
 => 
Type 
[Inherited from  Any]
Get the dynamic type of this instance. For value instances `x`, this is
equal to `type_of x`, but for `x` with a `ref` type `x.dynamic_type` gives
the actual runtime type, while `type_of x` results in the static
compile-time type.

There is no dynamic type of a type instance since this would result in an
endless hierarchy of types. So for Type values, dynamic_type is redefined
to just return Type.type.
Does a file or directory at path exist?
§(old_path String, new_path String)
:
Any
 => 
outcome unit
short-hand for accessing move effect in current environment and performing the default move operation using
io.file.move.move old_path new_path
moves file/dir from an old path to a the new path
can rename the file/dir as well by changing the name of the old file/dir to a new name in the new_path
returns a unit type as outcome in case of success and error in case of failure
short hand to get the currently
installed open effect
from the environment.
see `use` on how to use this.
short hand to get the currently
installed open effect
for type T from the environment.
see `use` on how to use this.
§
:
Any
 => 
String 
[Inherited from  Any]
convenience prefix operator to create a string from a value.

This permits usage of `$` as a prefix operator in a similar way both
inside and outside of constant strings: $x and "$x" will produce the
same string.
short-hand for accessing read effect in current environment
short-hand for accessing the stat effect in current environment
short-hand for accessing and using stats/lstats provided by the stat effect in current environment
in success it will return a meta_data outcome storing stats regarding the file/dir
in case of failure an error will be returned
resolve flag is used to indicate whether to resolve sym links or not
NYI: lstats behaves the same as stats in the interpreter
short hand for use when
it is not necessary to distinguish between opens

usage example:

this opens a file with the given mode and installs
effect (open T) to be used in `code()`.

type parameter T is used to distinguish between several open files.

usage example:

short-hand for accessing write effect in current environment
write String `s` to file `f`

Reference Types

reference to the delete operations that could take place
reference to the move operations that could take place
reference to the reading operations that could take place
§
 ref
:
Any
 is
 
[Contains abstract features]
reference to the seek operations that could be provided
reference to the stats that could be provided
§
 ref
:
Any
 is
 
[Contains abstract features]
reference to the writing operations that could take place

Value Types

delete -- effect wrapping the file delete operation
meta_data will be a feature storing the metadata of file/dir
the mode to use when opening a file
move -- effect wrapping the file move operation
§(T 
type
)
:
effect
 is
effect for manipulating open files
T is used to distinguish several open files
unit type used internally by open- and use-
short hands which can be used when one does not need
to distinguish between several open files.
read -- effect providing byte reading operations from files
seek -- effect providing stream seeking operations
stat -- effect providing operations to retrieve file stats
write -- effect providing writing operations for files

Type Features

§
:
Any
 is
 
[Inherited from  Type]
string representation of this type to be used for debugging.

result has the form "Type of '<name>'", but this might change in the future

redefines:

§
:
Any
 is
 
[Inherited from  Type]
There is no dynamic type of a type instance since this would result in an
endless hierarchy of types, so dynamic_type is redefined to just return
Type.type here.

redefines:

§(T 
type
)
:
Any
 is
 
[Inherited from  Type]
Is this type assignable to a type parameter with constraint `T`?

The result of this is a compile-time constant that can be used to specialize
code for a particular type.

is_of_integer_type(n T : numeric) => T : integer
say (is_of_integer_type 1234) # true
say (is_of_integer_type 3.14) # false

it is most useful in conjunction preconditions or `if` statements as in

pair(a,b T) is

=>

or

val(n T) is

§
:
Any
 is
 
[Inherited from  Type]
name of this type, including type parameters, e.g. 'option (list i32)'.
§
:
Any
 is
 
[Inherited from  Any]
Get a type as a value.

This is a feature with the effect equivalent to Fuzion's `expr.type` call tail.
It is recommended to use `expr.type` and not `expr.type_value`.

`type_value` is here to show how this can be implemented and to illustrate the
difference to `dynamic_type`.
last changed: 2024-12-27