max

package
v0.0.0-...-886b66b Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jul 21, 2022 License: Apache-2.0 Imports: 0 Imported by: 0

README

The deriveMax function returns the maximum of two arguments or the maximum element in a list.

Given the following input:

package max

func negative(i, j int) bool {
	return deriveMax(i, j) < 0
}

type boat struct {
	length int
}

func addIfBigger(boats []boat, big boat) []boat {
	if len(boats) == 0 {
		return append(boats, big)
	}
	m := deriveMaxs(boats, boats[0])
	if deriveCompare(big, m) > 0 {
		return append(boats, big)
	}
	return boats
}

goderive will generate the following code:

// Code generated by goderive DO NOT EDIT.

package max

// deriveCompare returns:
//   * 0 if this and that are equal,
//   * -1 is this is smaller and
//   * +1 is this is bigger.
func deriveCompare(this, that boat) int {
	return deriveCompare_(&this, &that)
}

// deriveMax returns the maximum of the two input values.
func deriveMax(a, b int) int {
	if a > b {
		return a
	}
	return b
}

// deriveMaxs returns the maximum value from the input list and the default value, if the list is empty.
func deriveMaxs(list []boat, def boat) boat {
	if len(list) == 0 {
		return def
	}
	m := list[0]
	list = list[1:]
	for i, v := range list {
		if deriveCompare(v, m) > 0 {
			m = list[i]
		}
	}
	return m
}

// deriveCompare_ returns:
//   * 0 if this and that are equal,
//   * -1 is this is smaller and
//   * +1 is this is bigger.
func deriveCompare_(this, that *boat) int {
	if this == nil {
		if that == nil {
			return 0
		}
		return -1
	}
	if that == nil {
		return 1
	}
	if c := deriveCompare_i(this.length, that.length); c != 0 {
		return c
	}
	return 0
}

// deriveCompare_i returns:
//   * 0 if this and that are equal,
//   * -1 is this is smaller and
//   * +1 is this is bigger.
func deriveCompare_i(this, that int) int {
	if this != that {
		if this < that {
			return -1
		} else {
			return 1
		}
	}
	return 0
}

Documentation

The Go Gopher

There is no documentation for this package.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL